Android(安卓)广播 使用方法
16lz
2021-12-04
动态注册的广播接收器
// MainActivity.javapublic class MainActivity extends AppCompatActivity { private IntentFilter mIntentFilter; private DynamicBroadcastReceiver mDynamicBroadcastReceiver; @Override protected void onCreate(Bundle savedInstanceState) { .... mIntentFilter = new IntentFilter(); mIntentFilter.addAction("THIS_IS_A_DYNAMIC_BROADCAST"); mDynamicBroadcastReceiver = new DynamicBroadcastReceiver(); // 动态注册广播接收器 registerReceiver(mDynamicBroadcastReceiver, mIntentFilter); // 发送广播 Intent intent = new Intent("THIS_IS_A_DYNAMIC_BROADCAST"); sendBroadcast(intent); } @Override protected void onDestroy() { .... unregisterReceiver(mDynamicBroadcastReceiver); } class DynamicBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.d("Guu", "receive dynamic broadcast!"); } }}
静态注册的广播接收器
// AndroidManifest.xml"http://schemas.android.com/apk/res/android" package="com.example.broadcast"> "android.permission.RECEIVE_BOOT_COMPLETED" /> // 静态注册广播接收器 ".StaticBroadcastReceiver"> "THIS_IS_A_STATIC_BROADCAST" /> // StaticBroadcastReceiver.javapublic class StaticBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.d("Guu", "receive static broadcast!"); }}// MainActivity.javapublic class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { .... // 发送广播 intent = new Intent("THIS_IS_A_STATIC_BROADCAST"); sendBroadcast(intent); }}
发送有序广播
1. 发送有序广播的方法:
intent = new Intent("THIS_IS_A_STATIC_BROADCAST");sendOrderedBroadcast(intent, null);
2. 设置广播接收器的优先级:
// 静态注册filter android:priority="100">// 动态注册mIntentFilter.setPriority(100);
3. 截断广播的方法:
public void onReceive(Context context, Intent intent) { .... abortBroadcast();}
使用本地广播
// MainActivity.javapublic class MainActivity extends AppCompatActivity { private IntentFilter mIntentFilter; private DynamicBroadcastReceiver mDynamicBroadcastReceiver; private LocalBroadcastManager mLocalBroadcastManager; @Override protected void onCreate(Bundle savedInstanceState) { .... mLocalBroadcastManager = LocalBroadcastManager.getInstance(this); mIntentFilter = new IntentFilter(); mIntentFilter.addAction("THIS_IS_A_DYNAMIC_BROADCAST"); mDynamicBroadcastReceiver = new DynamicBroadcastReceiver(); // 使用 LocalBroadcastManager 注册广播接收器 // 注意:本地广播只能动态注册 mLocalBroadcastManager.registerReceiver(mDynamicBroadcastReceiver, mIntentFilter); Intent intent = new Intent("THIS_IS_A_DYNAMIC_BROADCAST"); // 使用 LocalBroadcastManager 发送广播 mLocalBroadcastManager.sendBroadcast(intent); } @Override protected void onDestroy() { .... unregisterReceiver(mDynamicBroadcastReceiver); } class DynamicBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.d("Guu", "receive dynamic broadcast!"); } }}
更多相关文章
- Android(安卓)广播(Android(安卓)10)
- android 小知识总结
- Android(安卓)动态发送广播接收
- [Android实例] Android(安卓)开发者面试题-广播机制详解
- execlp启动android进程命令窗口通过adb shell 进入android 的Lin
- 【Android】Android(安卓)4.0 无法接收开机广播的问题
- 【Android】Android(安卓)4.0 无法接收开机广播的问题
- 【Android开机启动Activity或者Service方法】
- Android(安卓)应用程序开发基础