这是我计划做的事情:
我有我Activity
在其中注册的BroadcastReceiver
private LocalBroadcastManager localBroadcastManager;
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//handle received data
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
....
LocalBroadcastManager = LocalBroadcastManager.getInstance(context);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ACTIVITY);
localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter);
}
我有一个IntentService
从网络上获取数据并处理它的。在下载数据和处理完成期间,服务通过发送广播消息通知活动它正在做什么。下载数据和处理可能需要一段时间,具体取决于数据的大小。例如,最多可能需要 20 分钟。
localBroadcastManager.sendBroadcast(new Intent(ACTIVITY).putExtra(ACTION, value));
IntentService
通过在服务中注册接收器,活动使用类似的方法向 发送消息onStartCommand
。
这是经过测试的并且工作正常。我已经阅读了有关 globalBroadcastManager
和LocalBroadcastManager的信息,并且我担心这种方法的安全性。请记住,我的需求与服务和活动之间的通信严格相关,这两种方式都主要使用可打包的对象。
我的问题是:
使用 将数据从服务发送到活动可能会出现哪些安全问题
LocalBroadcastManager
?是否存在数据可能泄漏到另一个应用程序的情况?LocalBroadcast 真的是本地的吗?处理后的数据是私有的,这就是我担心的原因。服务和活动之间是否有更优化的通信方式?