(转)LocalBroadcastManager简介
LocalBroadcastManager简介
如果你对 BroadcastReceiver 还不了解,那么请移步(http://blog.csdn.net/plussoft/article/details/12871571)。
BroadcastReceiver 的设计初衷就是从全局考虑的,可以方便应用程序和系统、应用程序之间、应用程序内的通信,所以对单个应用程序而言BroadcastReceiver是存在安全性问题的。这些安全问题都可以通过 LocalBroadcastManager 来解决,LocalBroadcastManager 只会将广播限定在当前应用程序中。LocalBroadcastManager 发送的广播不会离开你的应用程序,同样也不会接收来自其它应用程序的广播,因此你可以放心的在 LocalBroadcastManager 中传播敏感信息。同时由于LocalBroadcastManager不需要用到跨进程机制,因此相对 BroadcastReceiver 而言要更为高效。
LocalBroadcastManager 是 android.support.v4 扩展包中的一个类。
范例
MainActivity
public class MainActivity extends Activity { Button button1; MyBroadcastReceiver myBroadcastReceiver; LocalBroadcastManager lbm; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /* * LocalBroadcastManager为单例模式 * 在应用程序任何地方均可调用LocalBroadcastManager.getInstance(context)获取唯一实例 * 如果想要用于接收广播 * 那么就要将LocalBroadcastManager定义在有效的生命周期内 */ lbm = LocalBroadcastManager.getInstance(this); myBroadcastReceiver = new MyBroadcastReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction("com.plusjun.test.hahaha"); //注册接收器以及过滤规则 lbm.registerReceiver(myBroadcastReceiver, filter); button1 = (Button)findViewById(R.id.button1); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setAction("com.plusjun.test.hahaha"); intent.putExtra("name", "plus"); //发送广播 lbm.sendBroadcast(intent); } }); } @Override protected void onDestroy() { super.onDestroy(); //别忘了解除接收器 lbm.unregisterReceiver(myBroadcastReceiver); } }
MyBroadcastReceiver
public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String str = intent.getStringExtra("name"); sLog(str); } private void sLog(String str) { Log.i("MyBroadcastReceiver", str); } }
和 BroadcastReceiver 注册与发送广播差不多,只是调用对象从 Activity 换成了 LocalBroadcastManager。
注意,LocalBroadcastManager 接收器只能通过代码注册(动态注册),不存在 BroadcastReceiver 的那种AndroidManifest注册。
以上部分内容转载或参考来源如下:
http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html
在此表示感谢。
转载请注明来源,版权归原作者所有,未经同意严禁用于任何商业用途。
微博:http://weibo.com/theworldsong
邮箱:theworldsong@foxmail.com
浙公网安备 33010602011771号