之前 的用Intent 在不同的Activity之间跳转,可以说是直接 Intent,因为指定 了明确 的目标。
广播则是相当于间接Intent.
间接intent就是没有指定具体目标的Intent,只是在创建 是指定 了一些 信息。然后再广播出去,
所有 关心这种Intent的广播接收器都会接收并处理。
一.间接 Intent的说明信息
Action
data:要操作的数据 ,以uri的形式表示,
category:动作的附加 信息。
type :数据 的类型,一般由intent相关信息推导。
component:目标组件 ,一般由intent相关信息推导。
Extras :用来 传递参数 ,如发送邮件时,将邮件名,正文都加入到Extras中,再通过intent 发送给相关的activity。
发送广播 :
ContextWrapper.sendBroadcast( Intent intent )
二 .接收广播
使用广播接收器---BroadcastReceiver。每一个广播接收器都 要有一个Intent 过虑 器。
steps;
1. 新建 一个 Intent过虑 器IntentFilter。用
IntentFilter.IntentFilter (String action)
接下来再设定一些 属性,如
IntentFilter.addcategory(String category)。
2. 新建 一个广播接收器BroadcastReceiver ,并重写 onReceiver()方法。
BroadcastReceiver receiver = new BroadcastReceiver(){
public void onReceiver(Context ctx, Intent intent ){
//接收到广播 后执行的
}}
note: onReceiver()里面只能执行一些段时间的代码 ,超过5秒就会出去超时的对话框,用时多的可以放在一个线程里面,or Activity or Service里,再用Intent去启动它们。
3. 注册一个接收器
新建广播 接收器后并不能马上就工作,因为android系统 并不知道你已经 拥有了一个接收器,所以要注册。
ContextWrapper.registerReceiver (BroadcastReceiver receiver, IntentFilter filter )
4.当我们不再关注 广播 时,就要将接收器注销了
ContextWrapper.unregister (BroadcastReceiver receiver )