在android中安排任务

我使用下面的代码来安排 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.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...