android原生定时任务_Android定时任务及循环任务基础详情

在Android开发中,定时执行任务的3种实现方法:

一、采用Handler与线程的sleep(long)方法(不建议使用,Jva的实现方式)

二、采用Handler的postDelayed(Runnable, long)方法(最简单的android实现)

三、采用Handler与timer及TimerTask结合的方法(比较多的任务时建议使用)

Android消息机制

首先来了解一下Android的消息处理机制

即Handlerd的运行机制,handler的运行需要底层的MessageQueue和Looper的支撑。MessageQueue(消息队列),它的内部存储了一些消息,以队列的形式对外提供插入和删除的操作(实际为单链表存储)。Looper(消息循环),配合MessageQueue实现实现消息的不断入队和出队工作。

一个关系图:

a9434d1ec49eb6ea3c7a2521ff9f7e3a.png

通过Handler可以很容易将任务切换到其他线程中执行,以减少主线程的负担,因此Handler常用来进行UI更新。这里只是简单的进行一些概述。

当然,现在已经有更好的消息处理办法了,了解handler和Asynctask可以更好的理解Android内部消息的处理机制。

推荐:EventBus,高度解耦,代码简洁明了,有兴趣的可以自行参考使用。

1.采用Handle与线程的sleep(long)方法

1) 定义一个Handler类,用于处理接受到的Message。

2) 新建一个实现Runnable接口的线程类,如下:

3) 在需要启动线程的地方加入下面语句:

分析:纯正的java原生实现,在sleep结束后,并不能保证竞争到cpu资源,这也就导致了时间上必定>=10000的精度问题。

2.采用Handler的postDelayed(Runnable, long)方法

1)定义一个Handler类

2) 启动与关闭计时器

分析:嗯,看起蛮不错,实现上也简单了,和slee

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值