我使用下面的代码来安排
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);
解决方法
TimerTasks并不适合在Android环境中使用,因为它们不是上下文感知的.如果您的上下文消失,TimerTask仍将在后台耐心等待,最终解雇并可能导致您的应用程序崩溃,因为其活动之前已完成.或者,它可以在关闭后保留对您的活动的引用,防止它被垃圾收集并可能使您的应用程序内存不足.
相反,使用postDelayed(),它将在活动关闭时自动取消任务.
final int delay = 5000; final int period = 1000; final Runnable r = new Runnable() { public void run() { Toast.makeText(getApplicationContext(),Toast.LENGTH_SHORT).show(); postDelayed(this,period); } }; postDelayed(r,delay);
顺便说一句,如果你需要手动取消任务,你可以使用removeCallbacks(r),其中r是你之前发布的runnable.