Android广播注册两者方式

2015-08-15 18:10 阅读 6,531 次 评论 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)取消注册,否则会报错。

你可能感兴趣的文章

来源:TeachCourse每周一次,深入学习Android教程,关注(QQ158#9359$239或公众号TeachCourse)
转载请注明出处: https://www.teachcourse.cn/332.html ,谢谢支持!

资源分享

浅谈json的封装和解析 浅谈json的封装和解析
关于universal imageloader缓存你需要知道的秘密 关于universal imageloader缓存你
Genymotion如何添加下载过的设备? Genymotion如何添加下载过的设备
浅谈GLSurFaceView类 浅谈GLSurFaceView类