Android的AlarmManager服务
来源:互联网 发布:广告公司用到的软件 编辑:程序博客网 时间:2024/05/22 08:21
有很多时候我们可能想在应用里加入一些定时触发的事件功能,这个时候我们可以使用安卓系统的一个服务——AlarmManager来处理,他的使用还算比较简单明了,先用context.getSystemService(Context.ALARM_SERVICE)得到这个Service,然后就可以使用他的一些静态方法了。主要的有——
public void set (int type, long triggerAtMillis, PendingIntent operation)这个方法从Android4.4以后默认是设置的非准确时间,也就是会比设置的时间晚那么一点点触发,这么改是为了节省电量,建议在对时间要求不是极精确的情况都用这个。
这里type有这么几种——
ELAPSED_REALTIME,一般用 SystemClock.elapsedRealtime()
获得,表示从开机到现在过去了多少毫秒(包括手机睡眠的时间);
RTC,一般用System.currentTimeMillis()获得,表示的是UTC的时间啦;
还有两个和他们相对应的——
ELAPSED_REALTIME_WAKEUP,RTC_WAKEUP,这两个和前边两个type不同之处在于这两种类型的闹钟任务在睡眠中也会触发,触发后会将系统从睡眠中唤醒,而前两种就不行了,如果前两种到了点时手机休眠着,那只有等用户唤醒或其他事件把他唤醒时任务才会执行。
第二个参数嘛,是说在何时触发,这个参数与第一个参数有关系。如果type选的是realtime,这里就要用SystemClock.elapsedRealtime()来作参考时间点,要是用RTC,就用System.currentTimeMillis(),或者是calendar.getTimeInMillis()。
说到这个我想补充个触发原则,很重要哦!即——如果设定的时间比当前时间早,会立刻触发。
第三个参数是一个PendingIntent,就是一个将给系统来执行的Intent,一般用PendingIntent.getActivity(....),PendingIntent.getService(....),PendingIntent.getBroadCast(...)生成,系统在执行时会相应PendingIntent类型来执行startActivity,startService,sendBroadcast。要注意的是,如果设置闹钟时两个PendingIntent一样,则后一个设置会覆盖前一个设置。
知道了这个,剩下的几个方法就大同小异了。
setExact(int type, long triggerAtMillis, PendingIntent operation)这个是Android4.4以上用的,当对时间精确要求高时可以用这个。
public void setRepeating (int type, long triggerAtMillis, long intervalMillis, PendingIntent operation)这个和set不同之处是它首次触发后会每隔intervalMillis这么长时间就会重复触发,直到cancel为止。
cancel(PendingIntent operation)这个很直观,就是把一个已经设定的闹钟任务取消掉。
setTime(long millis)、
这个是设定系统时间(UTC)
注意啦,如果你用用这个,必须在manifest里声明要权限permission.SET_TIME,不然程序就不鸟你。
还有几个方法比较不常用且不常见,我就不提啦~
- Android的AlarmManager服务
- Android提供的系统服务之--AlarmManager(闹钟服务)
- Android提供的系统服务之--AlarmManager(闹钟服务)
- Android系统定时服务AlarmManager
- Android-闹钟-AlarmManager-后台服务
- android AlarmManager的使用
- android AlarmManager的使用
- Android AlarmManager实现不间断轮询服务
- Android AlarmManager实现不间断轮询服务
- Android AlarmManager实现不间断轮询服务
- Android AlarmManager实现不间断轮询服务
- Android AlarmManager实现不间断轮询服务
- Android AlarmManager实现不间断轮询服务
- Android AlarmManager实现不间断轮询服务
- Android AlarmManager实现不间断轮询服务
- Android AlarmManager实现不间断轮询服务
- Android AlarmManager实现不间断轮询服务
- Android AlarmManager实现不间断轮询服务
- IOS UITableView
- 乐视笔试题
- json简单格式转树状结构 工具方法
- android:screenOrientation的说明
- PHP运行模式(cgi,fast-cgi,cli,web模块模式及php-fpm说明)
- Android的AlarmManager服务
- MyEclipse的调试技巧
- JVM Class 文件结构详解二
- SVN客户端的使用
- AFnetworking框架存储cookie和使用cookie请求总结
- Java中String类型笔试题目,对象声明与创建及在内存中的存贮
- 抽象类、接口
- PCA
- 遍历json数据封装成新的json数据