菜鸟入坑记——第一篇
关键字:AlarmManager
一、AlarmManager简介:
参考网址:https://www.jianshu.com/p/8a2ce9d02640
参考网站:https://www.runoob.com/w3cnote/android-tutorial-alarmmanager.html
推荐此网址:https://www.jianshu.com/p/d69a90bc44c0
了解android低电耗模式:https://developer.android.google.cn/training/monitoring-device-state/doze-standby.html
AlarmManager的作用:在特定的时刻为我们广播一个指定的Intent。
即:自己设定一个时间,当系统时间到达此时间时,AlarmManager自动广播一个我们设定好的Intent,指向某个Activity或Service。
注意:① AlarmManager主要用来在某个时刻运行你的代码,即使你的APP在那个特定的时间并没有运行。
二、获得AlarmManager实例对象:
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
三、方法:
setExact(int type, long startTime, PendingIntent pi); 一次性闹钟,执行时间精确,为精确闹钟
参数解释:此部分参考网站https://www.jianshu.com/p/8a2ce9d02640
四、程序设计:
(1)类型type
此处选用闹钟类型为AlarmManager.RTC:闹钟在睡眠状态下不可用,该状态下闹钟使用绝对时间(当前系统时间),状态值为1。
(2)开始时间startTime
由于通过SP获得的时间为String类型,需先转换为long类型,且时间单位为ms
1 /** 2 * String类型转换成date类型 3 * strTime: 要转换的string类型的时间, 4 * formatType: 要转换的格式yyyy-MM-dd HH:mm:ss 5 * //yyyy年MM月dd日 HH时mm分ss秒, 6 * strTime的时间格式必须要与formatType的时间格式相同 7 */ 8 public static Date stringToDate(String strTime, String formatType){ 9 KLog.d("进入stringToDate"); 10 try { 11 SimpleDateFormat formatter = new SimpleDateFormat(formatType); 12 Date date = null; 13 date = formatter.parse(strTime); 14 return date; 15 }catch (Exception e){ 16 return null; 17 } 18 } 19 /** 20 * String类型转换为long类型 21 * ............................. 22 * strTime为要转换的String类型时间 23 * formatType时间格式 24 * formatType格式为yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日 HH时mm分ss秒 25 * strTime的时间格式和formatType的时间格式必须相同 26 */ 27 public static long stringToLong (String strTime,String formatType){ 28 KLog.d("进入stringToLong"); 29 try{ 30 //String类型转换为date类型 31 Date date = stringToDate(strTime, formatType); 32 Log.d(TAG,"调用stringToDate()获得的date:" + date); 33 if (date == null) { 34 return 0; 35 }else { 36 //date类型转成long类型 37 long Hour = date.getHours(); 38 long Min = date.getMinutes(); 39 long TimeLong = Hour*60*60*1000 + Min*60*1000; 40 Log.d(TAG,"stringToLong()获得的Hour:" + Hour + " h"); 41 Log.d(TAG,"stringToLong()获得的Min:" + Min + " min"); 42 Log.d(TAG,"stringToLong()获得的TimeLong:" + TimeLong + " ms"); 43 return TimeLong; 44 } 45 }catch (Exception e){ 46 return 0; 47 } 48 }
Java Date、String、Long三种日期类型之间的相互转换
参考网址:http://www.blogjava.net/weishuangshuang/archive/2012/09/27/388712.html
成功获得睡眠时间(