android定时任务实现

android的系统定时器功能由AlarmManager类提供

AlarmManager提供了两个接口供使用,分别是单次和循环定时功能,如下:AlarmManager提供了两个接口供使用,分别是单次和循环定时功能,如下:

public void set(int type, long triggerAtMillis, PendingIntent operation);
public void setRepeating(int type, long triggerAtMillis, long intervalMillis, PendingIntent operation);
AlarmManager提供了4中类型定时功能,对应与上面的参数type,分别为

RTC_WAKEUP和RTC:都是使用UTC时间(即System.currentTimeMillis()获取到的时间)。区别在于RTC_WAKEUP可以唤醒系统,即手机锁屏休眠时也能够收到RTC_WAKEUP定时闹钟事件;而RTC不具有唤醒功能,闹钟到期事件只会在手机下次唤醒后才会发出,存在很大的延时性。

ELAPSED_REALTIME_WAKEUP和ELAPSED_REALTIME:都是使用系统时钟,即手机从开机开始计算的毫秒数(SystemClock.elapsedRealtime())。唤醒功能同上。

参数triggerAtMillis:下次定时闹钟到期时间

参数intervalMillis:循环定时闹钟的间隔时间

参数PendingIntent operation:定时闹钟到期操作,可以发广播、启动Activity或Service,广播用的最多。


如果定时闹钟到期操作较为复杂、耗时,需要使用后台service。防止Broadcast ANR。后台Service需要将耗时操作放入工作线程,并通过UI主线程Handler更新UI相关。

此时切忌:RTC_WAKEUP和ELAPSED_REALTIME_WAKEUP所具有的唤醒功能,但该WAKE_lock仅仅在广播、Activity、Service启动/发送期间有效。后台Service要处理耗时操作,必须主动申请和释放WakeLock资源,防止耗时操作无疾而终。






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值