Android广播注册两者方式

2015-08-15 18:10 阅读 3,463 次 评论 0 条
版权声明:本文著作权归TeachCourse所有,未经许可禁止转载,谢谢支持!
转载请注明出处:http://teachcourse.cn/332.html

1、动态注册,即在java代码中调用registerReceiver(BroadcastReceiver  receiver,IntentFilter fileter),如下:

  1. /** 
  2.   *重写onReceive方法 
  3.   */  
  4. public class SMSBroadcastReceiver extends BroadcastReceiver{  
  5.   
  6.           public void onReceive(Context context,Intent intent){  
  7.   
  8.           }  
  9. }  
  1. public class SMSActivity extends Activity{  
  2.        public void onCreate(Bundle savedInstanceState){  
  3.                    super.onCreate(savedInstanceState);  
  4.                    setContentView(R.layout.sms_main);  
  5.   
  6. //注册动态广播  
  7. IntentFilter filter=new IntentFilter();  
  8.                   filter.addAction("android.provider.telephony.SMS_RECEIVED");  
  9. SMSBroadcastReceiver  receiver=new SMSBroadcastReceiver();  
  10.                   registerReceiver(receiver,filter);  
  11.   
  12.        }  
  13. }  

2、静态注册,即在AndroidManifest.xml文件中注册,如下:

  1. <receiver>  
  2.   
  3. <intent-filter android:name=".SMSBroadcastReceiver">  
  4.   
  5. <action android:name="android.provider.telephony.SMS_RECEIVED"/>  
  6.   
  7. </intent-filter>  
  8.   
  9. </receiver>  

3、区别:

静态注册广播又叫:常驻型广播,广播不会随应用程序的关闭而停止,只要有广播信息,广播接收器都可以接收得到,它是直接在应用程序的AndroidManifest.xml文件中注册。

动态注册广播又叫:非常驻型广播,应用程序结束了,广播就停止,广播接收者将不会再收到广播信息,在一个Activity的onCreate、onResume中注册,需要在onPause或onDestroy中调用unregisterReceiver(SMSBroadcastReceiver receiver)取消注册,否则会报错。

关注公众号 扫一扫二维码,加我QQ

如果文章对你有帮助,欢迎点击上方按钮关注作者

来源:TeachCourse每周一次,深入学习Android教程,关注(QQ1589359239或公众号TeachCourse)
转载请注明出处:http://teachcourse.cn/332.html
MVP设计模式嵌入百度地图小结 MVP设计模式嵌入百度地图小结
Android Studio如何快速更改目录结构和包名? Android Studio如何快速更改目
Activity四种启动模式 Activity四种启动模式
HashMap方法解析 HashMap方法解析

发表评论

呲牙 憨笑 坏笑 偷笑 色 微笑 抓狂 睡觉 酷 流汗 鼓掌 大哭 可怜 疑问 晕 惊讶 得意 尴尬 发怒 奋斗 衰 骷髅 啤酒 吃饭 礼物 强 弱 握手 OK NO 勾引 拳头 差劲 爱你

表情