使用前面所说的广播的范围是全局的,一个应用程序发送的广播可能被其他程序截获,所以Android还定义了另一种广播:本地广播,只能被本程序接收的广播。实现起来也不难,用LocalBroadcastManager就行了。

private IntentFilter filter;    private LocalBroadcastManager localBroadcastManager;    private LocalReceiver localReceiver;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        localBroadcastManager = LocalBroadcastManager.getInstance(MainActivity.this); // 获取实例        mButton = (Button) findViewById(R.id.send_broadcast_button);        mButtonLocal = (Button) findViewById(R.id.send_localbroadcast_button);        mButton.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View arg0) {                Intent intent = new Intent();                intent.setAction("static_broadcast");                //sendBroadcast(intent);                sendOrderedBroadcast(intent, null); // 发送有序广播            }        });        mButtonLocal.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View arg0) {                Intent intent = new Intent("com.example.broadcasttest.LOCAL_BROADCAST");                localBroadcastManager.sendBroadcast(intent);            }        });        filter = new IntentFilter();        filter.addAction("com.example.broadcasttest.LOCAL_BROADCAST");        localReceiver = new LocalReceiver();        localBroadcastManager.registerReceiver(localReceiver, filter); // 注册本地广播监听器    }    class LocalReceiver extends BroadcastReceiver {        @Override        public void onReceive(Context context, Intent intent) {            Toast.makeText(context, "成功接收本地广播!", Toast.LENGTH_LONG).show();        }    };    @Override    protected void onDestroy() {        localBroadcastManager.unregisterReceiver(localReceiver);        super.onDestroy();    }

  从代码来看,声明和注册的方式和一般的广播类似,只是接收的注册和广播的发送都要通过LocalBroadcastMananger来实现。
  实现效果:

  注意:为什么本地广播不能通过静态的方式注册呢?因为本地广播只能自己的应用接收,所以发送本地广播的时候,程序肯定已经启动了,而静态注册广播的目的就是让程序没有启动的时候,也可以接收到广播。所以,静态注册对于本地广播是没有必要的。
  

更多相关文章

  1. Android(安卓)浅析 Broadcast(三) 发送原理
  2. android启动另一个app应用
  3. Android(安卓)8.0静态广播无法接收的问题
  4. android 动态注册JNI函数过程源码分析
  5. Android中广播的基本原理
  6. Android常亮设置以及读取电量
  7. android监听网络状态,实时更新网络状态
  8. Android(安卓)解决静态广播收不到的问题
  9. Android十八章:EventBus3.0使用

随机推荐

  1. Android蓝牙栈bluez使用方法
  2. Android(安卓)Ormlite 学习笔记2 -- 主外
  3. 在Mac OS X 下配置Android(安卓)NDK(配置
  4. Timer TimerTask Handler三剑合一
  5. 图像滤镜(GPUImage/GPU加速)、美化/图像
  6. Android(安卓)Studio如何自动 import
  7. Android(安卓)Studio使用gradle-retrolam
  8. android 系统属性
  9. Android(安卓)Camera 通过V4L2与kernel d
  10. android crash 追踪方式