使用Alarm类来实现定时任务
在Java中我们是通过Timer类来实现定时任务的,但是Android手机会在长时间不操作的情况下自动让cpu进入到睡眠状态,从而延长待机时间,这样一来就有可能导致Timer类的定时任务无法正常运行。而Alarm则具有唤醒cpu的功能。
1.获取AlarmManager的实例
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
这里获取AlarmManager实例的方法和获取NotificationManager实例的方法类似,都是通过调用Context.getSystemService()方法,然后传入Context.ALARM_SERVICE来获取。
2.设置定时任务
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,triggerAtTime,pendingIntent);
设置定时任务的时候,有四种方法,分别为set()、setExact()、setAndAllowWhileIdle()、setExactAndAllowWhileIdle()。这四种方法的区别一会再说,先看看它们的参数列表。一般而言它们都接收三个参数,分别为:定时任务工作类型、定时任务触发的时间(毫秒为单位)以及PendingIntent。其中工作类型又有以下四种情况:
- AlarmManager.ELAPSED_REALTIME_WAKEUP:表示让定时任务的触发时间从系统开机开始算起,会唤醒CPU
- AlarmManager.ELAPSED_