关闭

Android学习--广播机制

标签: androidactionfilterbuttonservice图形
652人阅读 评论(1) 收藏 举报
分类:

1.Android广播机制的介绍

特点:发送方并不关心接收方是否收到数据,以及受到数据之后的操作。


2.BroadcastReceiver的作用

广播接收者(BroadcastReceiver)用于接收广播Intent,广播Intent的发送是通过调 Context.sendBroadcast()Context.sendOrderedBroadcast()来实现的。通常一个广播 Intent可以被订阅了此Intent的多个广播接收者所接收。

广播是一种广泛运用的在应用程序之间传输信息的机制。而 BroadcastReceiver是对 发送出来的广播进行过滤接收并响应的一类组件;

来自普通应用程序,如一个应用程序通知其他应用程序某些数据已经下载完毕。

BroadcastReceiver自身并不实现图形用户界面,但是当它收到某个通知后, BroadcastReceiver可以启动Activity作为响应,或者通过NotificationMananger提醒用户, 或者启动Service等等。


3.BroadcastReceive的生命周期

当发送广播后(intent发送出去后),会到AndroidManifest.xml文件中找是不是有匹 配的action,如果有就会调用TestReceiver,然后获得TestReceiver对象,再执行onReceive 方法,这时候TestReceiver对象就没有用了,当我们再次点击按钮的时候就会重新获得对象,这 就是BroadcastReceiver的生命周期;


4.整个BroadcastReceive的实现过程:

首先,需要自己定义一个继承自BroadcastReceive的类,然后复写它的onReceive方法, 我们主要的代码都在这个方法里面写。然后,需要在AndroidManifest.xml这里面进行注册一 下,用<receive>这个标签进行生命,并用<intent-filter>进行过滤,这里面有一点很重要的是 intent如果符合此处所指定的action属性的话,就会启动这个receive,否则不启动。然后就是 编写Activity这个类,这里面需要需要写一个 监听器,然后通过IntentsetAction以及 ActivitysendBroadcast进行发送广播。


5.注册BroadcastReceiver的方法:

BroadcastReceiver用于监听被广播的事件(intent)为了达到这个目的, BroadcastReceiver必须进行注册,注册的方法有以下两种。

1)在应用程序代码中进行注册

registerReceiver(receiver,filter)

unregisterReceiver(receiver)//解除broadcastReceiver对象的注册

(我们可以在启动Activity时注册,在Activity不可见以后取消注册)

//生成一个IntentFilter对象

Intentfilterfilter = new IntentFilter();

//IntentFilter添加一个Action

filter.addAction("android.provider.Telephony.SMS_RECEIVED");

//注册broadcastReceiver对象

this.registerReceiver(smsReceiver,filter);

smsReceiver为接收广播的BroadcastReceiver对象


如果一个BroadcastReceive用于更新UI,那么通常会使用这种方法进行注册 BroadcastReceive;在Activity启动的时候注册BroadcastReceive,而Activity不可见以后就 取消 注册。

2)在AndroidManifest.xml中进行注册

<receiverandroid:name=".接收器类名">

<intent-filter>

<actionandroid:name="android.intent.action.EDIT">

</intent-filter>

</receiver>

intent-filter过滤器挑选广播中的Action是否匹配,若匹配则生成该Receiver对象

上述注册特点是:应用程序结束了之后,该BroadcastReceiver同样会接受到广播,一直 处于活动状态,有的应用程序需要这一点,有的则不需要,不需要时应该使用另一种注册方法。 5.Android内置的BroadcastActions

action中可以有很多类型如 ACTION_VIEW

ACTION_EDIT

ACTION_MAIN

ACTION_CAMARA_BUTTON(照相机按钮按下)

ACTION_DIAL(拨号)

ACTION_BATTERY_LOW(低电量)

等等可以在帮助文档android:content中找到。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15291次
    • 积分:314
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:12篇
    • 译文:0篇
    • 评论:2条
    文章分类