gpt4 book ai didi

Android TimerTask 在 onPause 时不会停止使用 "timer.cancel()"

转载 作者:行者123 更新时间:2023-11-30 02:46:01 32 4
gpt4 key购买 nike

我在这里阅读了一些关于使用 cancel() 停止定时器的文章;方法,但无论我如何尝试,计时器在 onPause() 发生后一直在后台运行。

(请注意,我正在计时器内执行一个 AsyncTask,我知道它只运行一次,但我担心如果我在主线程上运行 AsyncTask 它将挂断我的主要 Activity 。)

那么为什么计时器不会停止 onPause() 呢?

} //end on create


@Override
protected void onPause() {
super.onPause();
this.timer.cancel();
this.timer.purge();

}

@Override
protected void onResume() {
super.onResume();
callAsynchronousTask();
}

public void callAsynchronousTask() {
final Handler handler = new Handler();
timer = new Timer();
TimerTask doAsynchronousTask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
try {
MyTask task = new MyTask();
task.execute("Param 1", "Param 2", "Param 3");
} catch (Exception e) {
}
}
});
}
};
timer.schedule(doAsynchronousTask, 0, 2000);

}

最佳答案

当您取消计时器时,任务 已经开始执行。因此,即使计时器被取消,AsyncTask 也会在后台执行。

没有理想的方法来处理 AsyncTask 的取消。您可能想检查这个问题:Android - Cancel AsyncTask Forcefully

关于Android TimerTask 在 onPause 时不会停止使用 "timer.cancel()",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25009746/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com