广播

1.使用标准广播:

广播类声明:

public class Broadcast extends BroadcastReceiver{
      @Override
      public void onReceive(Context context, Intent intent) {
          //do Something
      }
}

动态注册: 只有应用启动的时候才能收到广播通知

	//注册
	Broadcast broadcast = new Broadcast();
 	IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
    registerReceiver(broadcast, intentFilter);				

	//Activity销毁时解注册
	unregisterReceiver(broadcast);

静态注册: 应用不启动就能收到广播通知

<application>
	 <receiver android:name=".Broadcast"
            android:enabled="true"
            android:exported="true" />
             <intent-filter>
                <action android:name="android.intent.action.SCREEN_ON" />
                        
            </intent-filter>
     </receiver>
<application>  

注意: 由于广播接收器中不允许开启线程,所以onReceive方法不能执行耗时操作,否则会报错

2.发送自定义广播:

首先在manifest文件中注册一个带有自定义 IntnetFilter 的 receiver

<application>
	 <receiver android:name=".Broadcast"
            android:enabled="true"
            android:exported="true">
	 		<intent-filter>
                <action android:name="xxx" />
            </intent-filter>
	</receiver>
<application>  

然后在需要时发送:

	Intent intent = new Intent("xxx");
	sendBroadcast(intent);
3.发送有序广播:
<application>
	 <receiver android:name=".Broadcast"
            android:enabled="true"
            android:exported="true">
	 		<intent-filter android:priority="100">					//这里优先级数值越大越先收到广播
                <action android:name="xxx" />
            </intent-filter>
	</receiver>
<application>  

然后在需要时发送:

	Intent intent = new Intent("xxx");
	sendOrderedBroadcast(intent, null);

截断有序广播只需在onReceive中执行:

	public void onReceive(Context context, Intent intent) {
         abortBroadcast();
    }
4.本地广播:

使用localBroadcastManager来注册和发送广播即可:

	//以下代码均在Activity中执行;
	LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);		
	
	//注册
	Broadcast broadcast = new Broadcast()
 	IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
    localBroadcastManager.registerReceiver(broadcast, intentFilter);	

	//取消注册
	localBroadcastManager.unregisterReceiver(broadcast);	
    
    //发送广播:
    Intent intent = new Intent("xxx");
    localBroadcastManager.sendBroadcast(intent);
5.显式广播和隐式广播:

隐式广播是一种不专门针对某App,可能被所有App监听的广播;
显示广播是针对某App的广播;

6.常用广播:

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值