Android四大组件之BroadcastReceiver
1、如何接收广播
接收广播首先要编写一个广播接收器类,该类必须从BroadcastReceiver或者子类继承。
在BroadcastReveiver.onReceive(Context context,Intent intent)中编写处理广播的代码,并且要在AndroidManifest.xml中注册。
1)自定义BroadcastReceiver类
class MyBroadcastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context,Intent intent){ //当接收广播后要执行的代码 //如果同一个广播接收器处理多个广播,则可以使用intent.getAction()来判断 if("action1".equals(intent.getAction()){ ..... }else if ("action1".equals(intent.getAction()){ ..... } } }
2)注册广播,在AndroidManifest.xml添加活着动态注册
<receiver android:name=".MyBroadcastReceiver"> <!-- intent过滤器,指定可以匹配哪些intent, 一般需要定义action,可以是自定义的也可是系统的 --> <intent-filter> <action android:name="com.lydia.broadcast.test"/> </intent-filter> </receiver>
3)发送广播
//指定广播动作 Intent intent = new Intent("com.lydia.broadcast.test"); // 添加category intent.addCategory("com.lydia.mycategory"); // 设置广播数据 intent.putExtra("name","broadcast_data"); // 发送广播 sendBroadcast(intent); //发送广播事件
#######################################
2、注册方法有2种:动态注册和静态注册
1)静态注册:在AndroidManifest.xml注册,android不能自动销毁广播接收器,也就是说当应用程序关闭后,还是会接收广播。
<receiver android:name=".MyBroadcastReceiver"> <!-- intent过滤器,指定可以匹配哪些intent, 一般需要定义action,可以是自定义的也可是系统的 --> <intent-filter> <action android:name="com.lydia.broadcast.test"/> </intent-filter> </receiver>2)动态注册:在代码中通过registReceiver()手工注册,该接收器也会随之销毁。当然,也可手工调用unregisterReceiver()进行销毁。
//注册代码: //生成BraodcastReceiver对象 MyBroadcastReceiver myReceiver = new MyBroadcastReceiver(); //生成一个IntentFilter对象 IntentFilter filter = new IntentFilter(); filter.addAction("com.lydia.broadcast.test"); //将BroadcastReceiver对象注册到系统当中 MyActivity.this.registerReveiver(myReceiver,filter); // 销毁代码: unregisterReceiver(myReceiver);
相关推荐
xilove0 2020-01-14
fuzhangandroid 2011-04-07
老菜鸟自习室 2011-08-05
mingming 2015-01-13
taiyuanwuyin 2015-03-31
xzw 2016-06-06
故作坚强 2015-03-31
chenjinlong 2020-04-06
magic00 2020-01-10
xilove0 2019-12-09
ThedakeLaugh 2010-08-23
StarkHuang 2014-09-04
易辰Android 2012-05-08