-1

アップデート

私が得たすべての回答は、「サービスがバックグラウンドで実行されているため」と言っています。

これは私の質問には答えません。

アクティビティから呼び出しlocationManager.requestLocationUpdatesて、しばらくするとアクティビティが破棄されたとします。

locationManagerアクティビティが破棄され、リスナーを呼び出す必要がないことをどうやって知ることができますか?

サービスからの登録は、アクティビティからの登録とどのように異なりますか?

元の質問

私の Android アプリは、バックグラウンドであっても位置情報の更新を取得する必要があります。

SO の標準的な答えは、通常、そのためのサービスを作成することです。

サービスはどのように役立ちますか?

を作成しLocationManagerて更新を登録するには、アプリのコンテキストを使用します。

mLocationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
mlocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 4000, 0, listener);

そのため、ロケーションの更新をサービスに実際に「バインド」するものはありません。

サービスからの登録とアクティビティからの位置更新の登録の違いは何ですか?

4

3 に答える 3

0

ポイントは、ロケーション リスナーを設定し、サービスで更新を要求することです。これを行うと、リスナーは常に実行されます。次に、アクティビティを開くと、サービスをバインドして、サービスが保存した場所を読み取ることができます。

あなたは活動のすべてのことをやっていると思いますが、それが違いを理解していない理由です.

于 2016-06-27T15:03:04.853 に答える
0

サービスはバックグラウンドで実行され、通常は別のスレッドでも実行されます。アクティビティがバックグラウンドで移動された場合、それは破棄され、場所の更新は取得されません。サービスはバックグラウンドで実行され、更新が通知されます。

于 2016-06-27T14:47:38.747 に答える