欢迎投稿

今日深度:

广播,广播电台在线收听

广播,广播电台在线收听


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);

常用action:

文章最后发布于: 2019-10-20 18:16:58

www.htsjk.Com true http://www.htsjk.com/shujukunews/38127.html NewsArticle 广播,广播电台在线收听 1.使用标准广播: 广播类声明: public class Broadcast extends BroadcastReceiver { @Override public void onReceive ( Context context , Intent intent ) { //do Something } } 动态注册: 只有应...
相关文章
    暂无相关文章
评论暂时关闭