2016-05-27 8 views
1

後に呼ばれ、私はアンドロイドのコードで1 TimerTaskを追加しました:私は、自動の時間をオフにした場合はTimerTaskををrepeatetly前方時間ジャンプ

myTimer = new Timer(); 
//set the rate as 1 min 
myTimer.scheduleAtFixedRate(new MyTimerTask(), 0, 
        60*1000); 

private class MyTimerTask extends TimerTask { 

    @Override 
    public void run() { 
     //do some task... 
    } 
} 

と、次のようにそれを呼び出します(ネットワークから)更新し、明日の日付として日付を設定すると、タイマータスクは5ミリ秒ごとに実行を開始します。

私はこれが何故起こったのか、何か手がかりがないので、これを解決する必要があります。代わりにハンドラを使用しましたが、TimerTaskを適切に動作させます。

あなたがscheduleAtFixedRateなくscheduleを使用しているので、それは最後の日のための実行「を逃した」に追いつこうとします...この点で

+0

なぜあなたは 'TimerTask'に行ったのですか?あなたはすでに' Handler'ベースのものが動作していましたか? – pskink

答えて

2

を助けてください。 API documentationから

:固定金利の実行で

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

+0

scheduleAtFixedRate()の代わりにschedule()を使用すると、問題を正しく解決できますか? – Dharsam1990

+0

私はそう思います。これがあなたのニーズに合っていれば、JavaDocを見てください。 –

関連する問題