2017-07-31 13 views
0

私のアプリのシナリオでは、私のアプリケーションの寿命を通してStarted Serviceを保ちたいと思います。このサービスでは、正確にはonStartCommandメソッドの場合、FusedLocationProviderClientLocationServices apiを使用して位置の更新をリクエストする必要があります。新しい「ロケーションアップデート」が受信されるたびに、更新されたロケーションはPreferenceManagerに保存されます。Androidサービス開始、位置情報サービス付きハンドラスレッド

ユーザーがアプリケーションからログアウトすると、私はこれを停止しますStarted Service

このロケーション更新ロジックを新しいHandlerThreadで処理する必要があります(Started Serviceはメインスレッドで実行されるため)。私の意見から

FusedLocationProviderClient.requestLocationUpdates(LocationServices APIから)メソッドは非ブロッキング呼び出しで、非同期プログラミングモデルに基づいているので、私はHandlerThreadが私のシナリオでは必要ないと思います。

P.S.私はGoogleSampleから参照を取った。そのサンプルでは、​​Bound Serviceも開始されています(クライアントにバインドされていない場合は終了しません)。また、HandlerThreadがロケーションの更新を取得するための実際のロジックを実装していません。

+0

この場合、HandlerThreadは必要ありません - ローカルストレージにアップデートを保存するだけであれば – pskink

答えて

2

"新しい場所"のイベントが発生したときの処理によって異なります。

重い処理やネットワーク通話をしていますか? - >別のスレッド。あなたは数ミリ秒しかかからない単純なものをやっていますか? - >これらのスレッドのどれを実行するかは実際問題ではありません。

+0

"新しい場所"イベントが発生したときにPreferenceManagerに位置情報を保存するだけです。 –

+0

@ Steve.NayLinAungそれはかなり軽量です。 –

+0

のハンドブックスレッドを設定する価値はありません。ありがとうございました。 –

関連する問題