これが私が物事を行うことを計画している方法です:
私は私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
Web からデータを取得して処理する があります。データのダウンロード中および処理の完了時に、サービスは、ブロードキャスト メッセージを送信することによって、実行中のアクティビティをアクティビティに通知します。データのサイズによっては、データのダウンロードと処理に時間がかかる場合があります。たとえば、最大 20 分かかる場合があります。
localBroadcastManager.sendBroadcast(new Intent(ACTIVITY).putExtra(ACTION, value));
IntentService
サービス内に受信者を登録することにより、アクティビティが にメッセージを送信するための同様のアプローチが使用されonStartCommand
ます。
これはテスト済みで、正常に動作します。BroadcastManager
グローバルとLocalBroadcastManagerについて読んだことがありますが、このアプローチのセキュリティに関連する懸念があります。私のニーズは、主にパーセル可能なオブジェクトを使用して、両方の方法でサービスとアクティビティ間の通信に厳密に関連していることを覚えておいてください。
私の質問は次のとおりです。
を使用してサービスからアクティビティにデータを送信すると、どのようなセキュリティ上の問題が発生する可能性があり
LocalBroadcastManager
ますか? データが別のアプリに漏洩する可能性がある状況はありますか? LocalBroadcast は本当にローカルですか? 処理されたデータは非公開であり、それが私が懸念している理由です。サービスとアクティビティの間の通信に最適な方法はありますか?