android广播使用注意
来源:互联网 发布:物资出入库软件 编辑:程序博客网 时间:2024/06/06 05:33
在某些场景下,应用内部进行数据传递需要使用到广播。使用广播进行数据传递必须注意以下几点:
1、 应用发送某个广播时,系统会将广播中的intent与系统中所有注册的BroadcastReceiver进行匹配,如果能匹配成功则调用相关的onReceive函数进行处理。
这里存在2个问题:
a、性能问题。每个广播都会与所有BroadcastReceiver进行匹配。
b、安全问题。广播发出去的数据可能被其他应用监听。
解决方式:
a、通过intent.setPackage指定包名,该广播只会被指定应用接收
b、设置权限。指定广播的接收者必须具备对应的permission。
2、 当应用注册了BroadcastReceiver之后,用来接收的广播。
这里也存在2个问题:
a、性能问题。系统有广播发送时会被用来与广播进行匹配判断。
b、安全问题。外界可以通过发送大量指定action的方式进行暴力攻击。
解决方式:
a、动态注册的BroadcastReceiver可以设置发送者必须拥有指定的权限才能给它发送广播。
b、静态注册的广播可以设置android:exported="false"来表示对外不可见,不接收外部广播。
当广播仅限于应用内部进行传递时,上面的问题都可以使用LocalBroadcastManager来解决。
Android v4 兼容包提供LocalBroadcastManager工具类,可以通过它来进行进程内的广播注册与发送,相比sendBroadcast(Intent)发送全局广播有如下好处:
1、 LocalBroadcastManager发送的广播只会在本应用内进行传递,不会存在隐私数据泄露的风险。
2、 不用担心外部伪造广播进行暴力攻击。
3、 更高效。
使用方式如下:
private LocalBroadcastManager mlocalBroadcastManager = LocalBroadcastManager.getInstance(context);
public void sendLocalBroadcast(Context context) {
Log.d(TAG, "send localBroadcast");
mlocalBroadcastManager.sendBroadcast(new Intent(ACTION_LOCAL));
}
public void registerLocalBroadcastReceiver(Context context) {
Log.d(TAG, "register localBroadcastReceiver");
IntentFilter filter = new IntentFilter();
filter.addAction(ACTION_LOCAL);
mlocalBroadcastManager.registerReceiver(localBroadcastReceiver, filter );
}
public void unregisterLocalBroadcastReceiver(Context context) {
Log.d(TAG, "unregister localBroadcastReceiver");
mlocalBroadcastManager.unregisterReceiver(localBroadcastReceiver);
}
- android广播使用注意
- Android中BroadcastReceiver广播使用及注意点
- 常驻性广播使用注意
- android 广播的使用
- android 广播的使用
- android 广播的使用
- android 广播的使用
- android 广播的使用
- android 广播的使用
- Android广播使用
- Android的广播使用
- Android使用本地广播
- android 广播的使用
- android广播简单使用
- Android广播的使用
- android 广播的使用
- Android 使用本地广播
- Android广播的使用
- android广播机制的实现
- Matlab Liblinear安装及测试过程
- 如何让WriteFile立即生效
- win7下安装mongodb
- commons-fileupload上传文件的使用
- android广播使用注意
- 一个完整的PHP ZIP压缩类的代码
- Ubuntu 12.04下编译hadoop 2.2.0
- Android Wifi方法大全
- C语言字符串变量初始化规范
- linux下使用tc做流量限速
- Xshell 4使用
- 技术面试中常出现的Linux问题汇总
- UIColor 的使用