如果只是在应用程序进程内发送和接收广播,可以考虑使用LocalBroadcastManager而不是更通用的Context.sendBroadCaset()方法。
使用LocalBroadcastManager更高效,因为不需要跨进程管理草错,也不要考虑广播涉及的安全问题。
demo:
接收activity
1 public class MainActivity extends AppCompatActivity { 2 3 public static final String FILETER = "MainActivity-BRODER"; 4 @butterknife.InjectView(R.id.button) 5 Button button; 6 private BroadcastReceiver broadcastReceiver; 7 private LocalBroadcastManager localBroadcastManager; 8 9 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.activity_main); 13 butterknife.ButterKnife.inject(this); 14 button.setOnClickListener(new View.OnClickListener() { 15 @Override 16 public void onClick(View view) { 17 startActivity(new Intent(MainActivity.this,SendActivity.class)); 18 } 19 }); 20 } 21 22 @Override 23 protected void onResume() { 24 super.onResume(); 25 localBroadcastManager = LocalBroadcastManager.getInstance(this); 26 IntentFilter intentFilter = new IntentFilter(); 27 intentFilter.addAction(FILETER); 28 broadcastReceiver = new BroadcastReceiver() { 29 30 @Override 31 public void onReceive(Context context, Intent intent) { 32 String name = intent.getStringExtra("name"); 33 Log.e("MainActivity", "MainActivity ======== " + name); 34 } 35 }; 36 localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter); 37 } 38 39 @Override 40 protected void onDestroy() { 41 super.onDestroy(); 42 localBroadcastManager.unregisterReceiver(broadcastReceiver); 43 } 44 }
发送 activity
1 public class SendActivity extends AppCompatActivity { 2 3 @InjectView(R.id.button2) 4 Button button2; 5 6 @Override 7 protected void onCreate(Bundle savedInstanceState) { 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.activity_send); 10 ButterKnife.inject(this); 11 12 button2.setOnClickListener(new View.OnClickListener() { 13 @Override 14 public void onClick(View view) { 15 LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(SendActivity.this); 16 Intent intent = new Intent(); 17 intent.setAction(MainActivity.FILETER); 18 intent.putExtra("name", "我是sendActivity 发送"); 19 localBroadcastManager.sendBroadcast(intent); 20 } 21 }); 22 } 23 }