こんにちは私は、サービスを実行しているアンドロイドアプリケーションを持っています。そのサービスや他のシステム(such as GPS
)から20分後に自動的に停止したいと思います。私はそれのためにタイマーを使う必要があると思いますか?Androidアプリケーションとタイマー
誰かが私がそれをどうすることができるかの例を示すことができますか?
こんにちは私は、サービスを実行しているアンドロイドアプリケーションを持っています。そのサービスや他のシステム(such as GPS
)から20分後に自動的に停止したいと思います。私はそれのためにタイマーを使う必要があると思いますか?Androidアプリケーションとタイマー
誰かが私がそれをどうすることができるかの例を示すことができますか?
多分あなたはそれのためのタイマーを必要としません。 。ちょうどあなたのサービスは、あなたがタイムアウトに達するたび([System.currentTimeMillis()
]メンバ変数と[stopSelf
](http://developer.android.com/reference/android/app/Service.html#stopSelf()あなたのサービスでhttp://developer.android.com/reference/java/lang/System.html#currentTimeMillis()を格納することによって開始されたときを追跡
たとえば、あなたのサービスの多忙な部分で、次のものがあります。
if(System.currentTimeMillis() - TIMEOUT > startTime) {
stopSelf();
}
私はAlarmManager
を使用します。20分に消灯するシングルショットアラームを設定します。アラームを受け取り、スタンドアロンBroadcastReceiver
で、stopService()
を呼び出す。
私はを持っています210、一部のsample code in one of my booksはAlarmManager
ですが、ブート時に制御を受けて繰り返しアラームを設定したい場合は、すべて「cron
」のシナリオをカバーしています。
ありがとうございました。あなたはこれを見つけるための最良の場所を推奨することができますか?問題のサービスはWakeLockを制御する唯一のサービスなので、どこに配置するかを決めるのが難しく、タイムアウトが常にチェックされます。ありがとう。 – Tom
本当にそれが良い場所がない場合は、独自のスレッドを作成したり、Timer.scheduleAtFixedRateを使用したり、別の答えで示唆されたAlarmManagerを使用したりすることができます。 –