Android之广播(Broadcast)

来源:互联网 发布:windows平板推荐 2016 编辑:程序博客网 时间:2024/05/01 13:34

四大组件:在Android中,有四大组件:Activity,Service,broadcast,content provider。

Intent是一个对动作和行为的抽象描述,负责组件之间与程序之间进行消息传递。
Broadcast Receiver组件提供了一种把Intent作为一个消息广播出去,由所有对其感兴趣的程序对其作出反应的机制。


Intent作为一种操作系统级别的消息传递机制,能够在不同的进程之间传递结构化消息。


不同Activity之间的通讯,属于不同UI线程之间的通讯,如果要在不同的Activity之间传递消息,则需要用到Intent。在Intent中告诉操作系统要选择哪个目标Activity进行实例化,并传递消息。

Intent中包括
– 源Activity
– 目标Activity
– 要传递的消息

一个广播机制包括:

Broadcast(广播)——发送广播;在需要发送信息的地方,把要发送的信息和用于过滤的信息(如Action、 Category)装入一个Intent对象,调用Context.sendBroadcast() 方法把Intent对象以广播方式发送出去。

broadcastReceiver(广播接收器)——接收广播,进行过滤接收并响应的一类组件;当Intent发送以后,所有已经注册的BroadcastReceiver会检查注册时的IntentFilter是否与发送的Intent相匹配,若匹配则就会调用BroadcastReceiver的void onReceive(Context curContext, Intent broadcastMsg)方法

Intent(意图)——保存广播信息的媒介

 

通过Intent实现Activity间的跳转有两种方式:
– 显式Intent:即在构造Intent对象时就指定接收者;
– 隐式Intent:即Intent的发送者在构造Intent对象时,并不知道也不关心接收者是谁,只通过filter来选择接收者,有利于降低发送者和接收
者之间的耦合。
• 而Broadcast的实现机制,与通过隐式的Intent启动Activity的方式是类似的。

 

Broadcast的生命周期:

1、广播接收器仅在它执行这个方法时处于活跃状态。当onReceive()返回后,它即为失活状态。
2、拥有一个活跃状态的广播接收器的进程被保护起来而不会被杀死,但仅拥有失活状态组件的进程则会在其它进程需要它所占有的内存的时候随时被杀掉。所以,如果响应一个广播信息需要很长的一段时间,我们一般会将其纳入一个衍生的线程中去完成,而不是在主线程内完成它,从而保证用户交互过程的流畅。

 

3、当系统通过filter字符串找到匹配的Receiver,onReceive方法就会被执行。
4、onReceive方法必须在5秒内执行完毕退出,否则会导致FC( Force Close强制关闭)。


Broadcast的应用:

1、通常来说, BroadcastReceiver用来更新content、启动service、更新UI或者通过notification manager在状态栏中提示。
2、5秒的限制保证了主要处理任务不会、也不应该在BroadcastReceiver中完成。
3、如果需要执行大量任务,可以在BroadcastReceiver中启用 Service去处理。

在Android操作系统中,有许多与手机相关的事件会对系统发送广播信息。当系统发出广播后,就会搜索是否注册了负责处理该广播的BroadcastReceiver。
4、因此,只要了解系统的广播类型,就可以实现很多手机自动服务功能。例如,收到新短信进行提示、手机来电时自动拒接等等


0 0
原创粉丝点击