AlarmManager的使用与几个获取时间的操作
来源:互联网 发布:java io深入理解 编辑:程序博客网 时间:2024/06/06 15:00
AlarmManager
定时器,会到指定的时间时执行相应的操作。
获取AlarmManager:
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
常量说明
ELAPSED_REALTIME:真实时间流逝,当手机休眠时不进行相应的操作。
ELAPSED_REALTIME_WAKEUP:真实时间流逝。当手机休眠时也进行相应的操作。
RTC:手机时间流逝。当手机处于休眠状态时,不进行相应的操作。
RTC_WAKEUP:手机时间流逝。当手机处于休眠状态时,也进行相应的操作。
ELAPSED与RCT的最大区别:后者是根据手机的时间来的,也就是说可以通过更改手机上的时间,影响操作的执行时间;而前者却是真实的时间流逝,即使更改了手机时间,也不会影响操作的执行时间。
以上的四个值都是常用方法中type的取值。
INTERVAL_DAY:一天。
INTERVAL_FIFTEEN_MINUTES:十五分钟。
INTERVAL_HALF_DAY:半天。
INTERVAL_HALF_HOUR:半小时。
INTERVAL_HOUR:一小时。
常用方法
set(type, triggerAtMillis, operation):设置一个闹钟(这里指的是定时执行的任务),该任务不会重复执行。到时间后会执行operation指向的操作。其中triggerAtMillis指的是操作开始执行的时间,如果该时间小于当前的时间,那么会立即执行operation。
setRepeating(type, triggerAtMillis, intervalMillis, operation);设置一个闹钟,该闹钟会定时、重复执行。其中intervalMillis指的是两次执行之间相隔的时间。其余的同上。
setInexactRepeating(type, triggerAtMillis, intervalMillis, operation);和setRepeating方法类似。区别是:setInexactRepeating不一定会在指定的时间处执行,有可能会有偏差(是为了更节约能量),而setRepeating却是在给定的时刻执行,不会有偏差。
cancel():取消相应的操作。
示例
Intent intent = new Intent(MainActivity.this, MyService.class);final PendingIntent pendingIntent = PendingIntent.getService(this, 100,intent, PendingIntent.FLAG_UPDATE_CURRENT);final AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);manager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + 24* 60 * 60 * 1000 + 60 * 1000, 1000, pendingIntent);findViewById(R.id.btn_change).setOnClickListener(new OnClickListener() {public void onClick(View v) {manager.cancel(pendingIntent);}});
获取时间方法
System.currentTimeMillis:获取系统时间,该时间是从1970年1月1日开始计时的,一直到系统当前的时间。要注意:由于系统的时间可以人为的进行修改,它得到的值也是从1970年到修改后的时间,并不一定是真正的当前时间。例如:当前4月14日,如果手机的时间被更改为4月15日,那么它得到的值就是到4月15日的,并不是到4月14的。
SystemClock.elapsedRealtime():得到的是系统开机后的时间,即使系统的时间不是真正的时间也可以得到正确的开机时长。并且把系统休眠的时间也计算在内。
SystemClock.uptimeMillis:和上面的一个基本类似,唯一区别是:该方法不把系统休眠的时间计算在内。
- AlarmManager的使用与几个获取时间的操作
- android通过AlarmManager固定时间与周期性的发送广播
- AlarmManager的使用
- AlarmManager的使用
- AlarmManager的使用
- AlarmManager的使用
- AlarmManager的使用
- AlarmManager的使用
- AlarmManager的使用
- AlarmManager的使用
- AlarmManager 的使用
- AlarmManager的使用
- AlarmManager的使用
- android AlarmManager的使用
- AlarmManager的使用
- AlarmManager的使用
- AlarmManager的使用
- AlarmManager的使用
- patch和diff的用法
- 单例模式
- IntelliJ IDEA使用笔记
- linux修改mac
- [LCA][dfs序]BZOJ 2819: Nim
- AlarmManager的使用与几个获取时间的操作
- window.createPopup()用法以及短消息提示框代码
- C 语言中的一维数组与指针
- JS定时器例子讲解
- 解决WebView加载Https无法显示的问题
- 端端Clouduolc与百度云盘等公有云同步的区别
- iOS技巧之获取本机通讯录中的内容
- 在编译中出现的问题,在新浪博客中找到的方法
- 主成分分析—Principal components analysis