1:android的广播机制介绍
2:broadcastReceiver的作用
3:broadcastReceiver的编写方法
继承BroadcastReceiver类实现onReceive方法
4:broadcastReceiver的生命周
接受广播之后就结束 以后有广播在重新接受
5:开发步骤:
1:首先定义一个类继承BroadcastReceiver 并实现oReceive方法
public class TestReceiver extends BroadcastReceiver{
public TestReceiver(){
System.out.println("TestReceiver");
}
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("onReceive");
}
}
2:Androidmanifest中定义一个
<receiver android:name=".TestReceiver">
<intent-filter>
<action android:name="android.intent.action.PICK" />
</intent-filter>
</receiver>
3:定义一个intent 看intent中的action是否和Androidmanifest中定义的action一致
Intent intent = new Intent();
intent.setAction(Intent.ACTION_EDIT);
TestActivity.this.sendBroadcast(intent);
4:发送广播
5:TestReceiver接受者每次接受后就会消失 一旦有新广播在重新接受
1. 内容提纲:
在本节课当中,我会继续为大家讲解Android的广播机制,重点内容有以下的两个方面:
a) 在应用程序当中注册BroadcastReceiver的方法
b) Android内置的Broadcast Actions的使用方法
2. 课程内容:
a) BroadcastReceiver的注册方法
在上节课当中,我们已经讨论过BroadcastReceiver的运行机制和基本使用方法,如果要使监听器能够接受到广播所发送Intent,就必须将这个BroadcastReceiver注册到系统当中,在manifest文件注册的方法如下:
但是使用这样的方法进行注册之后,即使你的应用程序没有启动,或者已经被关闭,这个BroadcastReceiver依然会继续运行,这样的运行机制可能会给软件的用户造成困扰。所以作为程序的开发者,我们希望能够有一种灵活的机制完成BroadcastReceiver的绑定和解除绑定操作。Android当然也考虑到了这些问题,所以在Context这个类当中提供了如下两个函数:
i. registerReceiver(receiver,filter);
这个函数的作用就是将一个BroadcastReceiver注册到应用程序当中,这个函数接收两个参数,第一个参数是需要注册的BroadcastReceiver对象,第二个是一个IntentFilter。第一个参数是非常容易理解的,第二个参数的作用是定义了哪些Intent才能触发这个注册的BroadcastReceiver对象。类似于前面所讲解的
<intent-filter>标签的作用;
1:注册BroadcastReceiver的方法
BroadcastReceiver用于监听被广播的事件(intent)
为了达到这个目的,BroadcastReceiver必须机型注册
注册的方法有以下两种:
1。在应用程序的代码中进行注册
注册BroadcastReceiver
registerReceiver(receiver,filter);
取消注册BroadcastReceiver
unregisterReceiver(receiver);
2。在AndroidManifest.xml当中进行注册
<receiver android:name="SMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
ii. unregisterReceiver(receiver);
这个方法就非常的简单了,用于解除BroadcastReceiver的绑定状态。一旦解除完成,响应的BroadcastReceiver就不会再接收系统所广播的Intent了。
b) 两种注册BroadcastReceiver方法的比较:
现在我们了解了两种注册BroadcastReceiver的方法之后,需要考虑一下这两种方法适用的场合:
i. 第一种注册的方法可以保证在应用程序安装之后,BroadcastReceiver始终处于活动状态,通常用于监听系统状态的改变,比如说手机的电量,wifi网卡的状态(当然,监视这些东西也是取决于软件的需求)。对于这样的BroadcastReceiver,通常是在产生某个特定的系统事件之后,进行相应的操作,比如说wifi网卡打开时,给用户一个提示;
ii. 第二种注册方法相对第一种要灵活的多,这样注册的BroadcastReceiver通常用于更新UI的状态。一般来说,都是在一个Activity启动的时候使用这样的方法注册BroadcastReceiver,一旦接收到广播的事件,就可以在onReceive方法当中更新当前的这个Activity当中的控件。但是需要注意的是如果这个Activity不可见了,就应该调用unregisterReceiver方法来解除注册;
c) Android系统当中自带的Broadcast Action:
我们使用BroadcastReceiver的目的多半是为了监听系统当中所发生的各种各样事件(当然也不排除有的时候我们自己的程序也会广播事件),所以就有必要了解一下在Android系统当中,究竟有哪些事件会被广播出来,关于这个问题Android SDK的文档上面有着详细的解释: