美文网首页
本地广播LocalBroadCaseReceiver

本地广播LocalBroadCaseReceiver

作者: 金馆长说 | 来源:发表于2018-09-11 21:32 被阅读36次

    全局广播是可以被其他应用所捕获,有些情况下我们不希望自己发送的广播被其他应用捕获,那么就可以考虑使用本地广播来实现了。

    优势

    1. 本地广播离不开应用所以不用担心数据泄露的问题
    2. 安全性高,只能接收自己应用发送过来的广播
    3. 比全局广播更加高效可控一些

    通过LocalBroadcastManager来注册和发送广播,它是一个单例对象,所以可以在全局使用,本地广播和全局广播在使用上相似。它只有一种注册方式就是代码动态注册,只能在程序运行的时候才能发挥作用,作用不能在xml中注册和使用。

    public class Test extends Activity {
        private static final String ACTION = "simple_action";
        private static final String DATA = "data";
        BroadcastReceiver mReceiver;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // 新建一个receiver
            mReceiver = new MyReceiver();
            // 注册receiver
            LocalBroadcastManager.getInstance(this)
                    .registerReceiver(mReceiver, new IntentFilter(ACTION));
            // 发送消息
            Intent messageIntent = new Intent(ACTION);
            messageIntent.putExtra(DATA, "给xxx的一封信");
            LocalBroadcastManager.getInstance(this).sendBroadcast(messageIntent);
        }
        @Override
        protected void onDestroy() {
            // 取消注册
            LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);
        }
        class MyReceiver extends BroadcastReceiver {
            @Override
            public void onReceive(Context context, Intent intent) {
                // 处理消息
                Log.i("TAG", "收到一封信:" + intent.getStringExtra(DATA));
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:本地广播LocalBroadCaseReceiver

          本文链接:https://www.haomeiwen.com/subject/kqjpgftx.html