私のアプリケーションには、15秒ごとにAsyncTaskを起動するタイマーがあります。Androidの再起動タイマーがキャンセルされた後
Timer timer = new Timer();
public void AsynchTaskTimer() {
final Handler handler = new Handler();
TimerTask timertask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
try {
new updateGPSTask().execute();
} catch (Exception e) {
// TODO Auto-generated catch block
}
}
});
}
};
timer.schedule(timertask, 0, 15000); // execute in every 15sec
}
これはonCreate()
メソッドから起動されます。
私は別のアクティビティを呼び出すときに、私のメインアクティビティで私のonPause()
メソッドのtimer.cancel()
を使ってこのタイマーをキャンセルする必要があります。
メインアクティビティに戻ると、タイマーを再起動する必要があります。 onRestart()
メソッドでAsynchTaskTimer()
を再起動しようとしましたが、java.lang.IllegalStateException: Timer was canceled
と表示されます。
タイマーを再起動するにはどうすればよいですか?
タイマーをonpauseでnullに設定し、timer = new Timer();のように再設定します。古いハッシュされたオブジェクトがキャンセルされたときに起動します。新しいものに再開されない限り、再開できません –
なぜハンドラとタイマーを一緒に使用していますか? – tony9099