質問: Androidのアプリケーションで直近20回のセンサーデータを表示する常駐アプリを作ろうと思っています。 常駐アプリについては、下記のサイトを参考にstartForegroundService() とstartForeground()を使うことで作れそうなのですが。 バックグラウンド実行制限 その後、Viewの更新はMainActivityで行わなければいけないことを下記のサイトを通して知りました。 他クラスからTextViewを変更したい 当初はAndroidのライフサイクルイベントを考慮していなかったのでBroadCastReceiverをそのまま使うつもりだったのですが、ライフサイクルイベントを考慮するとonPause()やonStop()においてはメッセージがたまり続けてしまう気がしています。 知らずに作って大丈夫?Androidの基本的なライフサイクルイベント31選 (2/4 また、onPause()やonStop()でBroadCastReceiverをunregisterすることも考えたのですが、アプリがonResume()されたタイミングで表示されるデータがonResume()する直前のデータではなく、onPause()の直前のデータになってしまいそうなのでこれもうまくいきません。 上記の状況なので、下記の3つの質問をさせていただきたいです。 もし何か情報ありましたら、コメントいただけたら幸いです。 質問 1) Androidのライフサイクルイベントを考慮した場合、アプリケーションがonPause()やonStop()においてBroadCastReceiverをunregisterしないと、メッセージがたまり続けてしまいエラーになってしまうのでしょうか? 質問2) 質問1)が正しい場合、アプリケーションが裏側にある間もViewを更新し続ける常駐アプリを作ることは技術的にできないのでしょうか? 質問3) 質問2のViewを更新し続ける常駐アプリが技術的にできない場合には、View更新の仕組みをViewからMainActivityに直接通知するのではなく、ViewとMainActivityの間に何か挟むことで、アプリケーションがResumeされたタイミングで中間に溜まったデータを一気に更新する実装を考えています。 技術的にはできそうな気がしているのですが、認識あっていますでしょうか? また間に何か挟むとするとおすすめの実装方法は何かありますでしょうか。 よろしくお願いいたします。
回答: 実装して確認しました。 質問 1) Androidのライフサイクルイベントを考慮した場合、アプリケーションがonPause()やonStop()においてBroadCastReceiverをunregisterしないと、メッセージがたまり続けてしまいエラーになってしまうのでしょうか? onPause()やonStop()にてunregisterせずとも、Viewが更新されていました。 というわけで、杞憂でした。