Android本地广播
2016-04-04 23:01
393 查看
Android中使用的广播一般是系统全局广播,即发出的广播可以被其他任何应用程序接收到,并且我们也可以接收来自于其他任何应用程序的广播。这样就很容易会引起安全性的问题,比如说我们发送的一些携带关键性数据的广播有可能被其他的应用程序截获,或者其他的程序不停地向我们的广播接收器里发送各种垃圾广播。
为了能够简单地解决广播的安全性问题,Android 引入了一套本地广播机制,使用这个机制发出的广播只能够在应用程序的内部进行传递,并且广播接收器也只能接收来自本应用 程序发出的广播,这样所有的安全性问题就都不存在了。 另外发送本地广播比发送系统全局广播更加高效。
本地广播的用法并不复杂,主要就是使用了一个 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 = LocalBroadcastManager.getInstance(this); Button 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"); 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(); } } }
另外还有一点需要说明,本地广播是无法通过静态注册的方式来接收的。其实这也完全 可以理解,因为静态注册主要就是为了让程序在未启动的情况下也能收到广播,而发送本地 广播时,我们的程序肯定是已经启动了,因此也完全不需要使用静态注册的功能。
相关文章推荐
- Android Studio如何使用Git提交代码到GitHub和OsChina并解决冲突
- Android图形graphics--自定义TextView,onMeasure和onDraw
- Android手机摇杆
- android ActionBar用法详解
- Android通过系统相机和相册设置头像
- Android手机游戏摇杆
- 【Android学习笔记】ListView使用SimpleAdapter适配器
- Android 学习笔记(5)—— ProgressBar
- Android之Linearlayouy线性布局
- 两个Activity之间的观察者模式
- Android消息处理机制
- Android 使用 Gradle 多渠道打包
- Android 学习笔记(4)—— ToggleButton 、Switch
- android_ListView的操作
- android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地
- Android Studio 出现 gradle DSL method not found: android() 错误
- Android 学习笔记(3)—— ImageView/RadioButton/CheckBox
- Android编程学习笔记 之 File数据存储
- 分层嵌套的登录
- android基础部分再学习---android处理运行时配置发生变化