广播,广播电台在线收听
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:
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。