使用广播接收器
博客专区 > chuiyuan 的博客 > 博客详情
使用广播接收器
chuiyuan 发表于3年前
使用广播接收器
  • 发表于 3年前
  • 阅读 66
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

前 的用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 )



追加:

如果用动态注册方法,也就是registerReceiver(),只有程序执行时才能接受广播,如果在 manifest文件中注册,则无论 程序 是运行还是关闭,广播都是活动状态 。

final Intent intent= new Intent ("z");
		
		sendButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				sendBroadcast(intent);
			}
		});

z是action 。注册在manifest 中时如下 

<receiver 
            android:name=".MyReceiver">
            <intent-filter>
                <action  android:name="z"/>          
          </intent-filter>
        </receiver>

广播会自动 接收。




共有 人打赏支持
粉丝 10
博文 91
码字总数 40993
×
chuiyuan
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: