设置闹钟
1 2 3 4 5 6 7 |
Intent intent = new Intent("自定义action" ); //使用第二个参数(request)区分不同的PendingIntent //该PendingIntent对应开启一个Service PendingIntent pendingIntent = PendingIntent.getService(RemainApp. getAppContext(), int(请求码), intent, 0); //在指定时间开启该PendingIntent对应Service alarmManager.set(0, info.getTime(), pendingIntent); |
移除闹钟
1 2 |
//移除指定PendingIntent对应闹钟 alarmManager.cancel(pendingIntent); |
注意
- 当设备关机和重启后,闹钟将会被清除,所以监听开机事件,对闹钟重注册
- setRepeating(int type, long triggerAtMillis, long intervalMillis, PendingIntent operation)方法将会设置一个重复性的闹钟。比set方法多了一个间隔参数。
type参数
- ELAPSED_REALTIME 当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是相对时间,是从系统启动后开始计时的,包括睡眠时间,可以通过调用SystemClock.elapsedRealtime()获得。系统值是3 (0x00000003)。
- ELAPSEDREALTIMEWAKEUP 能唤醒系统,用法同ELAPSED_REALTIME,系统值是2 (0x00000002) 。
- RTC 当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是绝对时间,所用时间是UTC时间,可以通过调用System.currentTimeMillis()获得。系统值是1 (0x00000001) 。
- RTC_WAKEUP 能唤醒系统,用法同RTC类型,系统值为 0 (0x00000000) 。
前两者使用相对时间,时间从系统启动开始算起,SystemClock.elapsedRealtime()可以获得当前的相对时间,单位为毫秒,
例如:alarmManager.set(AlarmManager.ELAPSEDREALTIMEWAKEUP, SystemClock.elapsedRealtime()+5000, sender); 后两者使用绝对时间,时间以1970.1.1号为参考时间,System.currentTimeMillis()获取从1970.1.1号以来的时间,单位为毫秒;
例如:alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+5000, sender);
0 Comments