当我调用cancel时,timer.scheduleAtFixedRate不会停止

Dal*_*ler 6 java android timertask

在onCreate,我运行一个每分钟都重复的任务.我在这里是怎么做到的:

myTimer = new Timer();
    int delay = 30000;   // delay for 30 sec.
    int period = 600000;  // repeat every 60 sec.
    doThis = new TimerTask() {
      public void run() {

                     Log.v("TImer","repeated");
                     wv.reload();

      }
    };

    myTimer.scheduleAtFixedRate(doThis, delay, period);
Run Code Online (Sandbox Code Playgroud)

所有代码都在onCreate中.因此,当应用程序从屏幕上关闭时,我可以在logcat中看到计时器钢块运行,并且除非应用程序被销毁,否则不会停止.所以,在onPause我打电话的活动中,myTimer.cancel();但它没有帮助.即使应用程序不在屏幕上,我仍然可以在logcat中看到更新.那么,如何阻止timerTask

Ant*_*jen 7

这是您的代码放入我的文件中,延迟和周期值已调整,因此我不必等待太久。我运行应用程序。我在 LogCat 中看到消息。我按下了 Galaxy S3 上的主页按钮。然后消息在 LogCat 中停止。

public class MainActivity extends Activity {
    Timer myTimer;
    TimerTask doThis;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myTimer = new Timer();
        int delay = 0;   // delay for 30 sec.
        int period = 1000;  // repeat every 60 sec.
        doThis = new TimerTask() {
          public void run() {

                         Log.v("TImer","repeated");

          }
        };

        myTimer.scheduleAtFixedRate(doThis, delay, period);
    }

    @Override
    protected void onPause() {
        myTimer.cancel();
        super.onPause();
    }
}
Run Code Online (Sandbox Code Playgroud)