LoginSignup
31
32

More than 5 years have passed since last update.

アプリ内でブロードキャストする場合は LocalBroadcastManager を使うと良いらしい

Posted at

サポートパッケージにLocalBroadcastManager というクラスがあるのを今頃知りまして。

ブロードキャストは使い方を誤るとデータを(アプリの)外部に流出させる可能性があるわけですが(Android アプリのセキュア設計・セキュアコーディングガイド 参照)、このクラスを使うと「他のアプリにデータを漏らさない」「意図しないブロードキャストを受信しない」「効率がよい」だそうです。

いつ使うんですか?

たとえば GPS を使うアプリで、GPS の受信は IntentService にやらせて、受信した位置を地図に表示するために、IntentService からブロードキャスト投げて、Activity に仕掛けたレシーバで受信する、なんてケースでしょうか。(いやそれは IntentService じゃなくて普通のサービスで aidl 使ってやれよ、とかいろいろあるわけですが。ん?PendingIntent でサービスを起動する方法だと、クライアントから bind するタイミングが無いからダメかな?)

使い方

stackoverflow に良い使い方が載ってました

使ってみた

状態認識の結果も秘匿情報でしょう、ということで以前作った ActivityRecognitionClient のサンプルを修正してみました。

まとめ

  • ブロードキャストする時は、まず LocalBroadcastManager を使ってみよう。
  • stackoverflow の回答へのダイレクトリンクとか、github の changeset へのダイレクトリンク便利すぎる!
31
32
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
32