0

基本的に15分ごとに実行され、GPSプロバイダーでrequestLocationUpdatesを実行するサービスをセットアップしました。サービスにリスナーを設定しています。

ここで、メソッドonStartCommandが終了したら、stopSelfを実行します。これは、サービスをさらに15分後に終了させたいので、AlarmManagerを使用して再度起動します。

ただし、位置情報とともにlistenイベントが到着する前に、サービスは終了します。

私がstopSelfをコメントアウトすると、その場所が受信されます。

場所が受信されるまでサービスを待機させるにはどうすればよいですか。onLocationChangedのイベントにstopSelfを配置することを考えましたが、常に起動するとは限りません。

もう1つの方法は、スレッドスリープを実装することでしたが、これはコードの臭いのように感じます。

4

1 に答える 1

0

1つの場所だけを取得するには、LocationManager.requestSingleUpdate()を使用し、onLocationChanged()でservice.stopSelf()を呼び出します。GPSが修正を無期限に検索することを懸念している場合(おそらくユーザーが洞窟にいる場合)、タイマーを設定し、特定の期間を超えたらサービスを停止します。

于 2012-07-21T18:12:18.817 に答える