Android 的定向广播 局部广播
2014-03-24 14:13
537 查看
在android 应用开发中,有时候需要使用广播机制,但是又不想让其他程序收到,只想让指定的程序收到,这就是定向广播,其实,既然定了向,就不能叫广播了,只能说是利用android的广播机制来进行通信而已。
AndroidSDK提供了LocalBroadcastManager类用来在程序内部进行广播,用法和正常广播使用一样,只是注册和发送都只能在同一个程序内部运行。
但是有时候,我想发出的广播只让固定的程序收到,这个程序也许并不是发出广播的程序,或者这个广播和某个全局广播一样,我不想影响其他程序。这个时候可以再发送的Intent上调用
setPackage方法设置接收广播的程序的包名。而包名可以通过Context的getPackageName()得到,或者直接写在常量里。
我做的应用中需要对所有的u盘进行读写测试,但是u盘的插入时机是不定的,也许是程序运行之前,也许是在之后。程序刚运行时,如果使用扫描目录的方式那么就找不到后插入的u盘,如果不停扫描会浪费cpu,而如果使用接收u盘挂载广播Intent.ACTION_MEDIA_MOUNTED,那么接收不到之前已经插入的u盘的广播。两种方法都用虽然可以,但是不利于程序的修改和扩展。所以我在程序开始运行时扫描u盘,然后将扫描到的路径伪造成挂载广播发出去,但是限定接受者的包名,这样就不会影响其他程序。而且让自己的程序收到了所有的u盘广播。统一了程序模型框架,可谓两全其美。
AndroidSDK提供了LocalBroadcastManager类用来在程序内部进行广播,用法和正常广播使用一样,只是注册和发送都只能在同一个程序内部运行。
但是有时候,我想发出的广播只让固定的程序收到,这个程序也许并不是发出广播的程序,或者这个广播和某个全局广播一样,我不想影响其他程序。这个时候可以再发送的Intent上调用
setPackage方法设置接收广播的程序的包名。而包名可以通过Context的getPackageName()得到,或者直接写在常量里。
我做的应用中需要对所有的u盘进行读写测试,但是u盘的插入时机是不定的,也许是程序运行之前,也许是在之后。程序刚运行时,如果使用扫描目录的方式那么就找不到后插入的u盘,如果不停扫描会浪费cpu,而如果使用接收u盘挂载广播Intent.ACTION_MEDIA_MOUNTED,那么接收不到之前已经插入的u盘的广播。两种方法都用虽然可以,但是不利于程序的修改和扩展。所以我在程序开始运行时扫描u盘,然后将扫描到的路径伪造成挂载广播发出去,但是限定接受者的包名,这样就不会影响其他程序。而且让自己的程序收到了所有的u盘广播。统一了程序模型框架,可谓两全其美。
相关文章推荐
- Android之定向广播
- Android定向广播
- Android中的广播也定向
- Android开发之局部广播的使用——LocalBroadcast
- 解析JVM线程同步机制&& Android中的广播也定向
- Android入门进阶教程(22)-系统广播 BroadcastReceiver详解
- Android07-Android广播
- Android个人每天总结.doc(day07四大组件之:广播接收者&服务Service)
- android用服务service与广播broadcastreceiver创建开机启动服务
- Android终止广播实现短信拦截
- Android3.1后Boot_COMPLETED广播不响应的问题
- Android入门:广播接收者应用(短信窃听器)
- Android中的广播Broadcast详解
- android 学习 广播机制的使用
- Android源码解析之广播(Broadcast)机制简要介绍和学习计划
- android菜鸟学习笔记26----Android广播消息及BroadcastReceiver
- android 中自定义广播的使用broardcast
- Android利用系统广播---监听网络变化
- Android开机广播和关机广播
- Android RecyclerView局部控件更新