broadcastReceive广播机制

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文件注册的方法如下:

1

但是使用这样的方法进行注册之后,即使你的应用程序没有启动,或者已经被关闭,这个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的文档上面有着详细的解释:

2
除了以上的这些Actions之外,Anroid系统还会将一些应用程序级别的时间广播出来,例如收到短消息等等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值