BroadcastReceiver--广播

BroadcastReceiver---接收广播,用于应用程序之间传输信息,是对发送出来的管公布进行过滤并响应的组件。

发送:(可以通过intent传参数,在onReceive中获取)

1.无序广播   context.sendBroadcast(intent);

2.有序广播  context.sendOrderedBroadcast(intent);

按优先级大小(1000,-1000)向下传播,在iintent-infilter中声明,可以终止广播意图的继续传播 . 接收者可以篡改内容 .
abortBroadcast();//中止有序广播向下传播

3.异步广播 context.sendStickyBroadcast(intent);

实现:

继承 BroadcastReceiver,重写 onReceive方法,

注:onReceive 中不能进行耗时操作,它只有十秒的生命,超过时间android会以为它无响应,就会报错

一.静态实现方式,需要在manifist中注册

public class MyBroadReceiver extends BroadcastReceiver {
	public static final String ACTION_SEND_SMS = "com.scxh.android.broadcastreceiver.send_sms";
	public static final String ACTION_CALL = "com.scxh.android.broadcastreceiver.send_sms";

	@Override
	public void onReceive(Context context, Intent intent) {
		String action = intent.getAction();
		if (action.equals(ACTION_SEND_SMS)) {
			Toast.makeText(context, "you have message", Toast.LENGTH_SHORT)
					.show();
		} else if (action.equals(ACTION_CALL)) {
			Toast.makeText(context, "you have message", Toast.LENGTH_SHORT)
					.show();
		}
	}

}
</pre><pre name="code" class="html">注册一般都是包名+类名
<receiver android:name="com.scxh.android.broadcastreceiver.MyBroadReceiver">
            <intent-filter >
                <action android:name="com.scxh.android.broadcastreceiver.send_sms"/>
                <action android:name="com.scxh.android.broadcastreceiver.com.scxh.android.broadcastreceiver.call"/>
            </intent-filter>
        </receiver>

一.动态实现方式,在代码中注册//registerReceiver(receiver,IntentFilter);

<pre name="code" class="html"><pre name="code" class="html"><span style="font-size:14px;">MyBroadReceiver receiver = new MyBroadReceiver();
IntentFilter filter = new IntentFilter(ACTION_SEND_SMS);
registerReceiver(receiver, filter);</span>

 
 
注销 

unRegisterReceiver(receiver);

建议:在activity声明周期中的onResume中注册,在onPause中注销


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值