android 动态注册广播


动态注册和静态注册的不同

动态注册是将在静态注册中 AndroidManifest.xml 中的过滤接收 放在程序里完成,直接看程序




SecondReceiver.java 文件 (新建了 com.test.receiver 包)

package com.test.receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class SecondReceiver extends BroadcastReceiver {

	private static final String SS = "SecondReceiver";

	@Override
	public void onReceive(Context arg0, Intent arg1) {
		// TODO Auto-generated method stub
		Log.i(SS, "SecondReceiver-->onReceive");
	}

}

MainActivity.java 文件

package com.test;

import com.lanbokaka.receiver.SecondReceiver;

import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {
	static final String SS = "SS";
	protected static final String ACTION = "com.lanbokaka.receiver.ACTION";
	private Button mButton1;
	private Button mButton2;
	private Button mButton3;
	SecondReceiver receiver;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		mButton1 = (Button) findViewById(R.id.button1);
		mButton1.setOnClickListener(new Button.OnClickListener() {
			@Override
			public void onClick(View arg0) {
				Intent intent = new Intent();
				intent.setAction(ACTION);  //增加 Action 标识
				sendBroadcast(intent);     //发送广播
			}
		});

		mButton2 = (Button) findViewById(R.id.button2);
		mButton2.setOnClickListener(new Button.OnClickListener() {

			@Override
			public void onClick(View arg0) {
				receiver = new SecondReceiver();   //注意:每次点击 “动态注册” Button 都会 new 一个接收器
				IntentFilter filter = new IntentFilter();
				filter.addAction(ACTION);           //过滤广播
				registerReceiver(receiver, filter);
			}
		});

		mButton3 = (Button) findViewById(R.id.button3);
		mButton3.setOnClickListener(new Button.OnClickListener() {
			@Override
			public void onClick(View arg0) {
				unregisterReceiver(receiver); //程序容易崩溃,可以增加判断再取消注册
			}
		});
	}
}


 AndroidManifest.xml  文件

<application>  
     .  
     .  
    <receiver android:name="com.test.receiver">        
    </receiver>  
</aplication>  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值