2009-06-29 11 views
2

こんにちは私は、サービスを実行しているアンドロイドアプリケーションを持っています。そのサービスや他のシステム(such as GPS)から20分後に自動的に停止したいと思います。私はそれのためにタイマーを使う必要があると思いますか?Androidアプリケーションとタイマー

誰かが私がそれをどうすることができるかの例を示すことができますか?

答えて

2

多分あなたはそれのためのタイマーを必要としません。 。ちょうどあなたのサービスは、あなたがタイムアウトに達するたび([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(); 
}
+0

ありがとうございました。あなたはこれを見つけるための最良の場所を推奨することができますか?問題のサービスはWakeLockを制御する唯一のサービスなので、どこに配置するかを決めるのが難しく、タイムアウトが常にチェックされます。ありがとう。 – Tom

+0

本当にそれが良い場所がない場合は、独自のスレッドを作成したり、Timer.scheduleAtFixedRateを使用したり、別の答えで示唆されたAlarmManagerを使用したりすることができます。 –

1

私はAlarmManagerを使用します。20分に消灯するシングルショットアラームを設定します。アラームを受け取り、スタンドアロンBroadcastReceiverで、stopService()を呼び出す。

私はを持っています210、一部のsample code in one of my booksAlarmManagerですが、ブート時に制御を受けて繰り返しアラームを設定したい場合は、すべて「cron」のシナリオをカバーしています。

関連する問題