private IntentFilter intentFilter;
private LocalRecevier localRecevier;
private LocalBroadcastManager localBroadcastManager;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
//获取LocalBroadcastManager实例
localBroadcastManager = LocalBroadcastManager.getInstance(this);
button=(Button)findViewById(R.id.button);
button.setOnClickListener(new View.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");
localRecevier = new LocalRecevier();
//注册广播
localBroadcastManager.registerReceiver(localRecevier,intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
//解注册
localBroadcastManager.unregisterReceiver(localRecevier);
}
class LocalRecevier extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(MainActivity.this,"接收本地广播",Toast.LENGTH_SHORT).show();
}
}
注意:本地广播是无法通过静态注册的方式来接收的!
最后,我们来总结一下使用本地广播的几个优点:
1. 可以明确的知道正在发送的广播不会离开我们的程序,因此不需要担心机密数据泄漏的问题.
2. 其他应用程序无法将广播发送到我们的程序内部,因此不需要担心会有安全漏洞的隐患.
3. 发送本地广播比起发送系统全部广播将会更加高效.