とりあえずやってミタ

とりあえず技術的っぽいことをいろいろやってみるブログ

Androidアプリ BroadcastReceiverがブロードキャストを受信しない

   

AndroidネイティブのJavaアプリで、アラームを発火してBroadcastReceiverで受信するアプリを作ってたのだがうまくいかなかった

公式のドキュメントや方々のブログを参考に以下の内容のソースを書いた。5秒後にアラームをセットして、BloadCastReceiverクラスから派生したAlaramReceiverクラスのonReceiveメセッドで受信されるといった簡単なもの。

AndroidManifest.xml
AlarmReceiver.java
MainActivity.java


このソースは、何もないスケルトンのandroidプロジェクトに実装すると正常に動作した。

しかし、数枚のアクティビティとAsyncTaskの派生クラスによって非同期プロセスを実装したプロジェクトでは、なぜかBroadcastReceiverにアラームを受信できなかった。

なお、アラームはシステムに正常に登録されていることはadbでdumpsysコマンドを発行して確認はできた

【メモ:adbでdumpsysで登録されたアラームを確認する】

いろいろ試した結果、AnroidManifest.xmlでReceiverを登録するときに

としていることが障害となっていたようで、これを削除すると正常にアラームが発行された。

このandroid:process=”:remote” は、メインスレッドとは別スレッドでレシーバを稼働させる(理解が間違っているかも)ための指定らしい。公式のドキュメントを見てもが自分の理解力が乏しくよくわからず。。ググってみるとなんとなくコピペして使っているサンプルが多数出回っている風。

時間の余裕ができたらちゃんと調べてみたい

 - メモ ,

  関連記事