私は、定期的にいくつかの情報(ユーザーの所在地など)を取得し、サーバーに報告し、場所がXの場所に一致するとプッシュ通知を受け取るようにしたいと考えています。GoogleAPIClientをバックグラウンドサービスで使用する
私は、アプリケーションが動作しているかどうかにかかわらず、定期的に位置情報を取得するための最良のメカニズムについて何らかの助言を得るでしょう。ここで私が考えているオプションとそれぞれの背景情報を紹介します。
は、標準のAndroidサービス
私の最初の考えを作成すると、位置情報の更新を取得し、場所が受信されると、それはそれをサーバーに送信しますGoogleAPIClientを初期化STICKYサービスを作成することでした。私がこのアプローチで持っている問題は、定期的に位置情報を取得しなければならないということです。したがって、ロケーションスキャンを実行していなくても、サービスは常に実行されます。また、サービス内で場所を頻繁にポーリングする最善の方法は何でしょうか? IntentService
私はアラームマネージャのウェイクアップを有する(GoogleAPIClientを経由して)位置情報の更新を開始しIntentServiceを開始したことについて考え番目のオプションでアラームを作成
。場所が取得されると、サーバーに送信し、場所の更新を閉じます。これにより、定期的に位置更新を開始/停止する問題が解決されます。しかし、私はIntentService内でGoogleAPIClientに接続することなく待ち時間を取ることはあまりありませんでしたが、これが最も効率的なことだとは思いません。 GcmTaskService
これはAlarmManagerの多くの利点を持っており、それが唯一のサービスをウェイクアップとして携帯電話が、それはのように思えたので、メンテナンスモードになっている時はいつでも居眠りモードの点でより効率的であるように思わ作成
良い解決策。しかし、私はIntapiServiceと同じ問題を抱えていますが、これはGoogleAPIClientに接続して何らかの待ち時間なしに場所を取得しています。
私はこの1つのウサギの穴をあまりにも遠くに行っているかもしれません。
それは私も同様に考えていた。 JobScheduler内のGoogleAPICクライアントへの接続をどうやって処理しましたか? blockingConnectをタイムアウトまたは別の方法で使用していますか? – pkramaric
非ブロック[connect()](https://developers.google.com/android/reference/com/google/android/gms/common/api/GoogleApiClient.html#connect())メソッドを使用しています接続結果に応じてジョブを処理します(onConnected、onConnectionFailedの各メソッド)。 – kws