プッシュ通知の受信時に UI の状態を更新しようとしています。これをAsyncTask
行うには、いくつかのネットワーク操作を実行し、結果に基づいて UI を更新する を開始する必要があります。
のドキュメントによると、レシーバー内で非同期操作を実行することは安全ではありません。これは、そのプロセスに他の「アプリケーション コンポーネント」がないと仮定 BroadcastReceiver
すると、それを実行しているプロセスが戻るとすぐに強制終了される可能性があるためです。onReceive()
はBroadcastReceiver
独自のプロセスで実行されていますか、それとも含まれているアクティビティと同じプロセスで実行されていますか? 更新する UI がある限り、タスクの完了のみを気にするのでAsyncTask
、アクティビティが閉じられた場合に死ぬ心配はありません。BroadcastReceiver がアクティビティと同じプロセスにあると仮定すると、これにより、説明したタスクをレシーバー内から起動しても大丈夫/安全になりますか?
編集:
明確にするために、レシーバーをアクティビティonResume()
に登録して登録解除しているonPause()
ため、アクティビティが既にアクティブな場合にのみインテントを受信する必要があります。