2015年2月6日 星期五

[Android] timer was canceled 閃退錯誤

被網路上的一堆Timer的教程騙了!!
通常Timer幾乎都要配上TimerTask
如果不這麼做的話表示你不用停止Timer
那你就不需要用到TimerTask了

在網路上找資料的時候幾乎都會看到為什麼會閃退
原是就是因為你Timer.cancel後就不能再Timer.schedule了

這裡有很不錯的範例
http://blog.csdn.net/snowdream86/article/details/7072530


再貼上他比較簡潔的code
TimerTask timerTask;
Timer timer;
private void startTimer(){ 
if(timer == null){
timer = new Timer();
}
  
if(timerTask == null){
timerTask = new TimerTask() {
@Override
          public void run() {
               sendUpdateIntent(UpdateIntentService.UPDATE_POSITION_TRACKING);
      }
     };
     }
     if(timer != null && timerTask != null ) {
     timer.schedule(timerTask, 1000, 8000);
     }
}



private void stopTimer(){  
if(timer != null){
timer.cancel();
timer = null;
}
if(timerTask != null){
timerTask.cancel();
timerTask = null;
}
}

沒有留言:

張貼留言