いくつかのアクティビティで構成されるアプリがあります。アプリの起動時に LocationManager からの更新のリッスンを開始し、数分後にタイムアウトして更新のリッスンを停止したいと考えています。私は他のアプリでこれを行いましたが、Activity は 1 つしかありません。
私が今持っているのは、LocationUpdates のリッスンを開始する BackgroundService です。十分な場所をすばやく取得すると、更新のリッスンを停止します。ただし、適切な場所をすぐに取得できない場合があり、タイムアウトしたいので、しばらくすると更新のリッスンを停止するタイマーがあります。アプリを起動して最初のアクティビティにとどまると、これは正常に機能します。
問題は、アプリを起動してからアプリの使用を開始し、他のアクティビティを開始すると、タイマーがオフにならないため、アプリが終了するまで LocationManager が常にオンになることです。
考え?アプリ内のすべてのアクティビティが場所を取得できるように、場所の更新をリッスンし、タイムアウトして更新のリッスンを停止するためのより良い方法はありますか?
更新: アクティビティを切り替えると BackgroundService が破棄されることが判明し、onDestroy() でタイマーをキャンセルしました。回答ありがとうございます。一般的なアプローチが合理的であり、おそらくどこかでばかげた間違いを犯したことを確認するのに十分でした(true)。