本地广播

一、概念

  系统广播可以被其他任何的应用程序接收到,同时也可以接受到其他任何应用程序发出的广播,存在一定的安全性问题。

  本地广播只能在应用程序内部传递,广播接收器也只能接受来自本应用程序发出的广播。

二、本地广播用法

  本地广播使用LocalBroadcastManager进行管理。本地广播无法通过静态注册的方式来接受。

  public class MainActivity extends Activity {
    private IntentFilter intentFilter;
    private LocalReceiver localReceiver;
    private LocalBroadcastManager localBroadcastManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      localBroadcastManager = LocalBroadcastManager.getInstance(this);
      // 获取实例
      Button button = (Button) findViewById(R.id.button);
      button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
          Intent intent = new Intent("com.example.broadcasttest.LOCAL_BROADCAST");
          localBroadcastManager.sendBroadcast(intent); // 发送本地广播
        }
      });
      intentFilter = new IntentFilter();
      intentFilter.addAction("com.example.broadcasttest.LOCAL_BROADCAST");
      localReceiver = new LocalReceiver();
      localBroadcastManager.registerReceiver(localReceiver, intentFilter);
      // 注册本地广播监听器
      }
      @Override
      protected void onDestroy() {
      super.onDestroy();

      localBroadcastManager.unregisterReceiver(localReceiver);
    }
    class LocalReceiver extends BroadcastReceiver {
    @Override
      public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "received local broadcast",
        Toast.LENGTH_SHORT).show();
      }
    }
  }

 

posted @ 2016-12-16 14:56  花臣酒卒  阅读(206)  评论(0编辑  收藏  举报