广播机制与短信拦截器

      生活中的广播大家很熟悉,尤其是收音机的各种各样的广播。Android 中有各式各样的广播,各种广播在Android 系统中运行,当系统/应用程序运行时便会向 Android 注册各种广播,Android 接收到广播会便会判断哪种广播需要哪种事件,然后向不同需要事件的应用程序注册事件,不同的广播可能处理不同的事件也可能处理相同的广播事件,这时就需要Android 系统为我们做筛选。

广播接收器

    如果你想接收到android中某一个广播,那么你得建立一个广播接收器,定义自己的接收器类  继承处抽象类BroadCastReceiver,并实现其onReceive()方法。

onReceive()方法中你要写一些你要完成的事件。然后另一个重点就是注册这个广播接收器,注册方法有两种:

a)  Manifest.xml文件中注册(自动注册)Manifest.xml文件中注册,一当注册上了就一直存在,与Actvity的生死无关 
Activity中注册,当Activity退出时必须将此接受器解注册
  
<receiver android:name=".类名">
<intent-filter >
<action android:name="符合过滤器当中事件的名称"/>
</intent-filter>
</receiver>
b) java文件中硬编码注册 (动态注册)Activity中注册,当Activity退出时必须将此接受器解注册
 

receiver
= new L20_BR();
IntentFilter filter
= new IntentFilter("android.intent.action.L20_BR");
this.registerReceiver(receiver, filter);
Toast.makeText(this, "注册成功", 0).show();

当然,有注册也有解注册
if(receiver!=null) {
unregisterReceiver(receiver);
//System.out.println(receiver==null);
receiver = null;
Toast.makeText(
this, "解注册成功", 0).show();
}
else {
Toast.makeText(
this, "未注册", 0).show();
}
这样一个接收器就写好了。
BroadCastReceiver生命周期
当点击按钮之后intent会到AndroidManifest.xml文件中找是不是有匹配的action,如果当接收器与发出的广播匹配上后就会调用接收器所在类,然后获得对象,再执行onReceive方法,当方法执行完成后此receiver对象就会被释放回收。当我们再次点击按钮的时候就会重新获得对象,这就是BroadcastReceiver的生命周期;
原文地址:https://www.cnblogs.com/mayue/p/2182865.html