私のアプリのシナリオでは、私のアプリケーションの寿命を通してStarted Service
を保ちたいと思います。このサービスでは、正確にはonStartCommand
メソッドの場合、FusedLocationProviderClient
とLocationServices api
を使用して位置の更新をリクエストする必要があります。新しい「ロケーションアップデート」が受信されるたびに、更新されたロケーションはPreferenceManager
に保存されます。Androidサービス開始、位置情報サービス付きハンドラスレッド
ユーザーがアプリケーションからログアウトすると、私はこれを停止しますStarted Service
。
このロケーション更新ロジックを新しいHandlerThread
で処理する必要があります(Started Serviceはメインスレッドで実行されるため)。私の意見から
FusedLocationProviderClient.requestLocationUpdates
(LocationServices APIから)メソッドは非ブロッキング呼び出しで、非同期プログラミングモデルに基づいているので、私はHandlerThread
が私のシナリオでは必要ないと思います。
P.S.私はGoogleSampleから参照を取った。そのサンプルでは、Bound Serviceも開始されています(クライアントにバインドされていない場合は終了しません)。また、HandlerThreadがロケーションの更新を取得するための実際のロジックを実装していません。
この場合、HandlerThreadは必要ありません - ローカルストレージにアップデートを保存するだけであれば – pskink