Android开发入门——Android的广播机制
1、 当产生一个事件时,比如来了一个电话,android就会把该事件广播给所有的广播监 听器,相应的监听器就会进行处理 图示: 而我们要做的就是实现相应的广播接听器BroadcastReveicer
2、 首先继承BroadcastReceiver类 //接收者的生命周期 :这个对象比较特殊,每次接收广播都要重新创建对象,一旦接收广播后,执行onReceive后,立刻被销毁,不应该说销毁,应该说立刻被垃圾回收器自动回收,因为Java没有销毁的功能。 public class TestReceiver extends BroadcastReceiver{ public TestReceiver(){//构造函数 System.out.println("TestReceiver"); } @Override //要执行的操作 public void onReceive(Context context, Intent intent) { System.out.println("onReceive"); } } 当android广播一个广播之后,BroadcastReveicer进行接收,然后调用onReceive ()进行操作
3、 要想接收android的广播,必须对监听器进行注册,在AndroidManifest中注册,如下: <receiver android:name=".TestReceiver"> <intent-filter> <action android:name="android.intent.action.EDIT" /> </intent-filter> </receiver> <intent-filter>是过滤器,决定了这个监听器要接收那个事件,其中name会和 Intent进行匹对
4、 如何进行广播的发送, 这时需要使用intent对象
Intent intent = new Intent(); intent.setAction(Intent.ACTION_EDIT); //说明动作 TestActivity.this.sendBroadcast(intent);//该函数用于发送广播
其中,Intent.ACTION_EDIT 和 AndroidManifest中的<intent-filter>的 Action name进行匹对,确定该接收器会不会对发来的广播感兴趣
上面方法文章在AndroidManifest中进行注册时,当该应用程序关闭时,该监听器依然处于活动状态,这适合于监听电池等功能,但是对于其他的可能产生麻烦,为了避免弊端,可以在程序中注册广播接收器。 在android广播中对BroadcastReceiver的注册分两种方法, 1.在androidmaniffest.xml中用标签注册。 2.用代码注册区别是前者注册后,即使应用程序结束,BroadcastReceiver仍然能接受到广播。后者程序结束就不会再接收。 注册BroadcastRecevier:registerReceiver(recevier, filter); 取消注册BroadcastRecevier:unregisterRecevier(Recevier); 如果一个BroadcastRecevier用于更新UI 那么通常会使用这种方法进行注册,在Activity启动的时候注册BroadcastRecevier,在Activity不可见以后取消注册. 其中filter是一个过滤器,它的动作名会和intent的action进行匹对. 下面就注册短信接听器的实例展示断码:
如果短信监听器接收到短信的事件,那么如何获取内容,如下: |