サポートパッケージにLocalBroadcastManager
というクラスがあるのを今頃知りまして。
ブロードキャストは使い方を誤るとデータを(アプリの)外部に流出させる可能性があるわけですが(Android アプリのセキュア設計・セキュアコーディングガイド 参照)、このクラスを使うと「他のアプリにデータを漏らさない」「意図しないブロードキャストを受信しない」「効率がよい」だそうです。
たとえば GPS を使うアプリで、GPS の受信は IntentService
にやらせて、受信した位置を地図に表示するために、IntentService からブロードキャスト投げて、Activity
に仕掛けたレシーバで受信する、なんてケースでしょうか。(いやそれは IntentService じゃなくて普通のサービスで aidl 使ってやれよ、とかいろいろあるわけですが。ん?PendingIntent でサービスを起動する方法だと、クライアントから bind するタイミングが無いからダメかな?)
stackoverflow に良い使い方が載ってました
状態認識の結果も秘匿情報でしょう、ということで以前作った ActivityRecognitionClient
のサンプルを修正してみました。