LocalBroadcastManager 使用

如果只是在应用程序进程内发送和接收广播,可以考虑使用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 }

 

posted @ 2015-08-04 17:09  nihao1314520  阅读(355)  评论(0编辑  收藏  举报