2012-03-02 4 views
0

イムは、Android用のオーディオプロファイルスイッチャーに取り組んでおり、プロジェクト全体の一部として、私は次のタイマーのコードを使用してバックグラウンドで実行されているサービスがあるダイナミックなインターバル期間を尊重ない:のAndroidのDev:タイマ

timer.scheduleAtFixedRate(new TimerTask() { public void run() {.....}, 0, nextUpdateInterval);

タイマーが動的に生成された次の更新間隔期間を守っていないことに気付いています... nextUpdateIntervalは最初の実行では30000(30秒)に初期化されるプライベートstatic longとして宣言されています....プロファイルが見つかると、私は数学を行い、nextUpdateIntervalを更新します...私は、デバッグ目的のためにnextUpdateIntervalの値を時間/分に戻しました。そしてcalcul ationが、それは時間と分で私を示したように、次のタイマーの実行が行われるべきとき

...、...期待どおりに動作しnextUpdateInterval計算されます。プロファイルが見つかったら long entirePeriodDiff = toTimeMiliseconds - fromTimeMiliseconds;

はその後、私は計算しますnextUpdateInterval = entirePeriodDiff - elapsedTime;

1のシナリオ例:long elapsedTime = rightNowDate.getTime() - fromDate.getTime();

、その後、私はnextUpdateIntervalを更新しますので、のような経過時間は、「仕事」のプロフィールは、午前9時から午後4時30分に設定されている、サービス/アプリが(14:02に実行されますEST)、私のトーストメッセージは絶えず実行されており、行動していますカウントダウンすると、どれくらいの時間が残っているのかがわかります。この場合は2:28になり、減少していきます。理想的には2:28が上がるまで表示されません。 android doc 1として

答えて

0

固定金利の実行では、タスクの各連続運転の開始時刻は、前回の実行が行われたときのために関係なく、予定されています。これにより、タイマーが時間通りにタスクを開始できないように遅延があると、一連のバンチアップ実行(別のタスクの直後に起動)が発生する可能性があります。

私はそれが理由かもしれないと思いますが、あなたはええことが問題だったの代替「一定期間」

+0

を検討する必要があることがあり、私はちょうど、各nextUpdateIntervalための新しいタイマー/ TimerTaskを作成しまった...に感謝あなたの入力 –

関連する問題