错误:java.lang.IllegalStateException: TimerTask is scheduled already

Process: com.multak.cookaraclient, PID: 27384
java.lang.RuntimeException: Unable to resume activity {…….MainActivity}: java.lang.IllegalStateException: TimerTask is scheduled already
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3139)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3170)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1420)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:150)
    at android.app.ActivityThread.main(ActivityThread.java:5621)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)
 Caused by: java.lang.IllegalStateException: TimerTask is scheduled already
    at java.util.Timer.scheduleImpl(Timer.java:569)
    at java.util.Timer.scheduleAtFixedRate(Timer.java:525)
    at com.multak.cookaraclient.MainActivity.onResume(MainActivity.java:453)
    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1266)
    at android.app.Activity.performResume(Activity.java:6446)
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3129)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3170)?
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1420)?
    at android.os.Handler.dispatchMessage(Handler.java:102)?
    at android.os.Looper.loop(Looper.java:150)?



at android.app.ActivityThread.main(ActivityThread.java:5621)? at java.lang.reflect.Method.invoke(Native Method)? at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)? at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)?
  @Override
    protected void onResume() {
   super.onResume();
        if(timerTask==null){
            timerTask = new TimerTask() {
                @Override
                public void run() {
                    }
            };
            timer.scheduleAtFixedRate(timerTask, 100, 1000);
        }
      // timer.scheduleAtFixedRate(timerTask, 100, 1000);
}

一个TimerTask 通过schedule方法使用之后,不能通过schedule方法被调用第二次,如出现则报错误如上。。
如想利用这个timertask时,只能重新获得一个实例

今天多一点积累,明天少一分烦恼
原文地址:https://www.cnblogs.com/galibujianbusana/p/7383828.html