2012-04-11 6 views
1

私はいくつかのアクティビティで構成されるアプリを持っています。私はいつ私のアプリが起動したら、私はLocationManagerからの更新を聞き始め、そして数分後にタイムアウトしてアップデートのリッスンを止めたい。私は他のアプリでこれをやったことがありますが、私は1つのアクティビティしか持っていません。Android:タイマーのバックグラウンドサービス

私が現在行っていることは、LocationUpdatesの受信を開始するBackgroundServiceです。十分な場所にすばやくアクセスできる場合は、更新の受信を停止します。しかし時にはそれはすぐに良い場所を取得しない、私はそれがタイムアウトしたいので、私はちょっと後に更新を聞いて停止タイマーがあります。これは、私がアプリケーションを起動し、最初のアクティビティにとどまるときにうまく動作します。

問題は、アプリケーションを起動してから、他のアクティビティが開始され、Timerが一度もオフにならないため、アプリケーションが終了するまで常にLocationManagerがオンになることです。

思考?場所の更新を聴くためのより良い方法があるので、アプリ内のどのアクティビティでも場所を取得し、タイムアウトして更新の受信を停止することができます。

更新: それは)私が活動を切り替える、と私はonDestroy(でタイマーをキャンセルするときBackgroundServiceが破壊されますが判明しました。応答のおかげで、それは一般的なアプローチが合理的であることを確認するのに十分であり、私はおそらくどこかで愚かな間違いを犯したでしょう(真実)。

答えて

0

なぜタイマーをバックグラウンドサービスに入れないのですか?それが問題を解決します。

+0

タイマーがBackgroundServiceにあります。アプリを起動して最初のアクティビティを続けると、タイマーは必要に応じてオフになります。私が別のアクティビティに行くと、タイマーは消えません。 – aha

+0

サービスをシャットダウンする必要がありますか?ログに記録せずに例外をキャッチしていますか?これが役に立たない場合は、実装の詳細を確認できるようにコードを投稿してください。 –

関連する問題