Android Alarm定时任务基础

本文介绍了Android中定时任务的实现方式,重点讲解了Alarm机制的使用,包括获取AlarmManager实例,set()方法的参数解析,以及不同类型的定时任务唤醒方式。通过示例解释了如何创建触发广播的PendingIntent,并提供了SystemClock和System.currentTimeMillis()方法的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文参考自《第一行代码》

Android中定时任务有两种实现方式:
1、用 Java API 中的 Timer 类;
2、用 Android 的 Alarm 机制;
因为Android手机在长时间不使用时会让CPU自动进入睡眠状态,有可能导致Timer中的定时任务无法正常运行;
Alarm 机制则不存在这个问题,它具有CPU唤醒功能,可以保证每次需要执行定时任务时CPU都能正常工作。

Alarm 机制基本用法
1、获取一个 AlarmManager 实例

AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);

2、调用set()方法设置定时任务

long triggerAtTime = SystemClock.elapsedrealtime() + 10 * 1000;
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WEAKUP, triggerAtTime, pendingIntent);

set()有三个参数
Parameters:
type One of ELAPSED_REALTIME, ELAPSED_REALTIME_WAKEUP, RTC, or RTC_WAKEUP.
triggerAtMillis time in milliseconds that the alarm should go off, using the appropriate clock (depending on the alarm type).
operation Action to perform when the alarm goes off; typically comes from IntentSender.getBroadcast().

type 的四个选择:
ELAPSED_REALTIME:让定时任务的触发时间从系统开机开始算起,但不会唤醒CPU;
ELAPSED_REALTIME_WAKEUP:让定时任务的触发时间从系统开机开始算起,会唤醒CPU;
RTC:让定时任务的触发时间从1970年1月1日0点开始算起,但不会唤醒CPU;
RTC_WAKEUP:让定时任务的触发时间从1970年1月1日0点开始算起,会唤醒CPU;

triggerAtMillis 就是定时任务触发的时间,以毫秒为单位。如果第一个参数使用的是ELAPSED_REALTIME或ELAPSED_REALTIME_WAKEUP,则这里传入开机至今的时间再加上延迟执行的时间。如果第一个参数使用的是RTC或RTC_WAKEUP,则这里传入1970年1月1日0点至今的时间再加上延迟执行的时间。

operation 是一个PendingIntent。这里我们一般会调用getBroadcast()方法获取一个能够执行广播的PendingIntent。这样当定时任务被触发时,广播接收器的onReceive()方法就能得到执行。

SystemClock.elapsedrealtime()方法可以获取到系统开机至今所经历时间的毫秒数;
System.currentTimeMillis()方法可以获取到1970年1月1日0点至今所经历时间的毫秒数;

以上就是Alarm机制的基本用法,在下一篇文章中会做一个在后台执行定时任务的小项目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值