<翻译>Android中定时任务的实现

翻译自:http://android-developers.blogspot.sg/2007/11/stitch-in-time.html?m=0

1.利用TimerTask实现任务的定时执行

    TextView shoothzj;
    int count = 0;//用于计数
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        shoothzj = (TextView) findViewById(R.id.shoothzj);
        Timer timer = new Timer();//新建一个Timer
        timer.schedule(new UpdateTimeTask(),100,200);
        //通过schedule方法执行一个TimerTask,Timertask是一个抽象类,必须重写它的run方法。
        //task,long a,long b代表的是先等待a毫秒的延迟执行任务,然后每次等待大约b时间执行任务。
    }
    class UpdateTimeTask extends TimerTask{

        @Override
        public void run() {
            count++;
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    shoothzj.setText("这是"+"第"+count+"次");
                }
            });
        }
    }

2.利用Handler实现定时任务的操作

TextView shoothzj;
int count = 0;
private Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mHandler = new Handler();//初始化handler
    shoothzj = (TextView) findViewById(R.id.shoothzj);
    mHandler.postDelayed(new UpdateTimeTask(),200);//延迟200,执行这个任务
}
class UpdateTimeTask extends TimerTask{
    @Override
    public void run() {
        count++;
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                shoothzj.setText("这是"+"第"+count+"次");//执行完毕
                mHandler.postDelayed(new UpdateTimeTask(),100);//延迟100,再执行这个任务
            }
        });
    }
}

如果你想要取消这个post事件,你可以使用handler的removeCallbacks(TimerTask task)方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,795评论 25 709
  • 在Android中经常需要定时循环执行某一段代码,大家首先想到的是Timer,在一般的场合下,Timer和...
    一只小菜鸟的进阶之路阅读 12,477评论 0 6
  • Timer 定时器相信都不会陌生,之所以拿它来做源码分析,是发现整个控制流程可以体现很多有意思的东西。 在业务开发...
    石先阅读 11,498评论 2 13
  • 今天上午在中校区东配楼召开生物大组会,主要内容是听取三位参加青基赛决赛的三位同志的试讲并进行评价。 三位同志各具特...
    春日暖阳阳阅读 1,644评论 0 0
  • 莫名的 突然就变得忧伤起来 说不清楚到底是因为什么 岁月像一张网 把我紧紧地缠绕 无论如何挣扎都逃不脱 窒息的感...
    五月的荷阅读 1,631评论 0 2