AlarmManager与日历对象Android java

你好我试图制作一个简单的完全工作的闹钟,但我坚持做出正确的警报……我不明白的是这个:

https://developer.android.com/training/scheduling/alarms.html

// Set the alarm to start at 8:30 am Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.HOUR_OF_DAY, 8); calendar.set(Calendar.MINUTE, 30); // setRepeating() lets you specify a precise custom interval--in this case, // 20 minutes. alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60 * 20, alarmIntent); 
  • 我们将当前时间以milis设置为日历,所以如果我们在milis中获得时间,那么现在将开始以milis设置当前时间然后分配小时和分钟的目的是什么?

  • 在milis设定时间设定从1970年到现在的几百毫秒?

  • 日历在milis中获取时间返回我们设置的小时以来的milis数量? 要么 ? 我根本不理解这些线条,为什么我们以毫秒为单位设置当前时间然后设置小时点火?

  • 编辑 – 如果我设置闹钟在10:00和10点05分触发,我该怎么办? 它立即开火……..

我们将当前时间以milis设置为日历,所以如果我们在milis中获得时间,那么现在将开始以milis设置当前时间然后分配小时和分钟的目的是什么?

(编辑:严格来说不是真的getInstance()应该自动设置当前日期和时间的时间 – 以毫秒为单位设置时间可能与此无关) – 目的是同时设置当前年/月/日。 如果你只设置小时和分钟,那么在哪一天发射是不明显的。

在milis设定时间设定从1970年到现在的几百毫秒?

自UTC时区1970年1月1日以来的当前毫秒数。

日历在milis中获取时间返回我们设置的小时以来的milis数量? 要么 ? 我根本不理解这些线条,为什么我们以毫秒为单位设置当前时间然后设置小时点火?

在这种情况下,getTimeInMillis()将返回自UTC时区1970年1月1日以来的毫秒数,直到当天的08:30。

编辑 – 如果我设置闹钟在10:00和10点05分触发,我该怎么办? 它立即开火……..

时间已经过去了。 请记住时间是UTC! 如果您在美国或亚洲,可能与您对“现在”的解释有很大不同。