Android广播注册两者方式

2015-08-15 18:10 阅读 5,022 次 评论 0 条

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教程,关注(QQ158#9359$239或公众号TeachCourse)
转载请注明出处:https://www.teachcourse.cn/332.html ,谢谢支持!
“Faild to load the JNI shared Library”解决办法 “Faild to load the JNI sh
Android Studio “Live Templates”如何提升编程效率? Android Studio “Live Temp
浅谈SQLite数据库的操作 浅谈SQLite数据库的操作
Android Studio的调试技能,你懂了吗? Android Studio的调试技能,你

发表评论

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

表情