3

現在の場所を確認し(Google Play Services LocationClientを使用)、その場所をサーバーに送信する必要があるAndroidアプリケーションがあります。これは、バックグラウンドで定期的に発生する必要があります (例: 5 分ごと)

このコードは非常にうまく機能しており、通常、数秒の許容範囲内で 5 分ごとに場所を提供します。この問題は、Android が修正を取得できない場合に発生します。これらの条件下では、コールバックが 5 分後に NULL ロケーション オブジェクトで実行されることを期待していましたが、これは起こりません。アプリケーションは、コールバックを呼び出すことなく、場所を探し続けるだけです。

次のように作成された locationRequest オブジェクトを使用して、LocationClient の requestLocationUpdates メソッドを呼び出します。

locationrequest = LocationRequest.create();
locationrequest.setInterval(5 * 60 * 1000);  
locationrequest.setFastestInterval(3 * 60 * 1000);
locationrequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationrequest.setExpirationDuration(45 *1000);
locationclient.requestLocationUpdates(locationrequest, mPendingIntent);

場所を取得できない場合でも、LocationClient に 5 分ごとに電話をかけてもらう適切な方法がわかりません。5 分ごとにアラームが鳴り、最新の場所をサーバーに送り返すことができるのはありがたいのですが、コールバック内で送信を処理したいと思っていました。

他の誰かがこの状況に対処しなければなりませんでしたか、またはそれに対処する方法を知っていますか?

4

1 に答える 1

0

残りのコードで何をしているのかわかりませんが、ライフサイクルメソッドに関連してLocationRequestandを管理するか、それらを呼び出しているだけでよいと思います。LocationClientActivityFragment

Android 開発者ブログからのこの投稿と一緒に受信位置の更新のチュートリアルが良い例です。

これらの更新のオンとオフを切り替えたり、アプリがフォアグラウンドにあるときにのみ効果的にタイマーを実行したりする場合、アプリはLocationClient更新を受信するために接続する必要があるためです。次に、開発者のブログ投稿が示唆しているように、アプリがバックグラウンドにあるときは、更新を受信できるが、同じタイマー ベースのアプローチを使用しないパッシブ ロケーション リスナーに切り替えることができます。アプリがフォアグラウンドに戻ったら、パッシブ リスナーをオフにし、再接続して 5 分間のタイマーを再び開始できます。 onResume()onCreate()onStop()Google Play Services

于 2013-08-30T14:38:18.487 に答える