我使用下面的代码来安排android中的任务,但它没有给出任何结果.请同样告知.
int delay = 5000; // delay for 5 sec.
int period = 1000; // repeat every sec.
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
Toast.makeText(getApplicationContext(),"RUN!",Toast.LENGTH_SHORT).show();
}
}, delay, period);
Run Code Online (Sandbox Code Playgroud)
emm*_*mby 17
TimerTasks不适合在Android环境中使用,因为它们不具有上下文感知能力.如果您的上下文消失,TimerTask仍将在后台耐心等待,最终解雇并可能导致您的应用程序崩溃,因为其活动之前已完成.或者,它可以在关闭后保留对您的活动的引用,防止它被垃圾收集并可能使您的应用程序内存不足.
相反,使用postDelayed(),它将在活动关闭时自动取消任务.
final int delay = 5000;
final int period = 1000;
final Runnable r = new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(),"RUN!",Toast.LENGTH_SHORT).show();
postDelayed(this, period);
}
};
postDelayed(r, delay);
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果你需要手动取消任务,你可以使用removeCallbacks(r)r是你之前发布的可运行的地方.
| 归档时间: |
|
| 查看次数: |
16903 次 |
| 最近记录: |