2012-01-06 8 views
0

私のアプリケーションで将来コードを実行させたいのですが。私がやりたいAndroidのHandler.PostDelayedを使用して、指定された時刻にイベントが発生するようにするにはどうすればよいですか?

:ログで

Date now = new Date(); 

    for (Date beep : scheduledBeeps) { 
     if (beep.after(now)) 
     { 
      Logger.i("adding beep"); 
      m_beepTimer.postAtTime(beepNow, beep.getTime()); 
     } 
    } 

私は4回のビープ音がしかし、彼らは火決して、追加見ることができます。私はそれがuptimeMillisと何か関係があると仮定していますが、何をすべきか分かりません。

+0

今後、特定の時間、または特定の時間にしますか? –

答えて

1

今、beep.gettime()との違いを取得し、postattime関数に渡す必要があります。稼働時間はベースとして使用されるため、電話が深いスリープ状態になると正確ではない可能性があります。

beep.gettime - 今+ SystemCLock.uptimeMillis()

あなたは現在1970年1月1日から現在のミリ秒に非常に多くの同等物を渡している機能

をpostattimeに渡す必要があります。

0

Calendarクラスを使用して、特定の時点を設定することができます。

Calendar beepTime = Calendar.getInstance(); 

beepTime.set(Calendar.DAY_OF_MONTH, 2); 
beepTIme.set(Calendar.HOUR_OF_DAY, 01); 
beepTime.set(Calendar.MINUTE, 55); 
beepTime.set(Calendar.SECOND, 00); 

getInstanceは現在の時刻に設定し、上記のような任意の変数を変更できます。たとえば、今月の2日に1時55分に時間が作成されます。確かに言っても、私はあなたの問題について十分に知らないが、それ:あなたは、これはちょうどあなたのpostAtTime方法に

編集をそのポップ

beepTime.getTimeInMillis() 

とオフに行く時間に設定しますAlarmManagerを使用する方が良いかもしれません。私は、PostDelayedはそうは思いませんが、プログラムが実行されていなくてもまだ動作していることを知っています。私が間違っているならば、私を修正してください!

関連する問題