Android开发--BroadcastReceiver2

     上一篇文章介绍了在AndroidManifest.xml文件中定义过滤器的方法,这篇文章讲解使用java代码定义这些过滤器。

     首先,介绍在xml文件中定义过滤器的弊端。如果开发者在xml文件中定义的不是系统级事件,正如上一篇文章中的那样,那么不管用户的应用程序是否关闭,Receiver程序始终处于运行(监听)状态,直到用户手机关闭。这样,就会对内存和手机电量造成极大的浪费,所以当用户不需要定义系统级事件时,可以使用简单的java代码实现过滤器的注册。

下面是具体的实现代码:

public class BroadcastReceiver01 extends Activity {
	private Button button;
	private Button button2;
	private Broadcast_receiver  brReceiver01;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_broadcast_receiver01);
		button=(Button)findViewById(R.id.button1);
		button2=(Button)findViewById(R.id.button2);
		button.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				brReceiver01=new Broadcast_receiver();
				IntentFilter intentFilter=new IntentFilter();
				intentFilter.addAction("BruceZhang");
			    registerReceiver(brReceiver01, intentFilter);
			    Intent intent=new Intent("BruceZhang");
//			    由于是并不是使用内置的Action,所以系统不会发出这个广播事件,仍然需要用户手动的去广播
			    sendBroadcast(intent);
			}
		});
		button2.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
			unregisterReceiver(brReceiver01);	
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_broadcast_receiver01, menu);
		return true;
	}

}

public class Broadcast_receiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context arg0, Intent arg1) {
		// TODO Auto-generated method stub
		Log.d("BruceZhang", "This is BroadcastReceiver!!!"+arg1.getAction());
		if(arg1.getAction()=="BruceZhang"){
			Log.d("BruceZhang", "---->This is BroadcastReceiver!!!");
		}
	}

}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值