动态注册的广播接收器

// 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!");        }    }}

更多相关文章

  1. Android(安卓)广播(Android(安卓)10)
  2. android 小知识总结
  3. Android(安卓)动态发送广播接收
  4. [Android实例] Android(安卓)开发者面试题-广播机制详解
  5. execlp启动android进程命令窗口通过adb shell 进入android 的Lin
  6. 【Android】Android(安卓)4.0 无法接收开机广播的问题
  7. 【Android】Android(安卓)4.0 无法接收开机广播的问题
  8. 【Android开机启动Activity或者Service方法】
  9. Android(安卓)应用程序开发基础

随机推荐

  1. Android监控外接USB设备和获取USB等设备
  2. 5分钟理解Android中的上下文!!!
  3. android双击返回键退出程序
  4. 收藏的Android非常好用的组件或者框架
  5. Android(安卓)CheckBox
  6. Android(安卓)TextView文字过多时,通过滚
  7. android imageswitcher gallery 根据数据
  8. Android(安卓)通过WebView 调用Js sqlite
  9. android各组件详解
  10. 安装android时提示The operation cannot