【发布时间】:2018-09-14 14:51:57
【问题描述】:
我有一个应用程序应该在存储在数据库中的指定时间触发警报。 时间存储为 (HH:mm) 格式,24 小时格式。
这是代码。
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String temp = h+":"+m;
Date date = sdf.parse(temp);
alarmMgr = (AlarmManager)_c.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(_c, AlarmBroadcastReciever.class);
alarmIntent = PendingIntent.getBroadcast(_c, requestCode, intent, 0);
alarmMgr.set(AlarmManager.RTC_WAKEUP,Calendar.getInstance().getTimeInMillis()+ date.getTime(), alarmIntent);
_c: 上下文变量 h 是小时(24 小时格式),m 是分钟。
我想在凌晨 4:30 发出警报,但它在凌晨 03:09:35 立即响起。
如何在特定时间仅安排一次警报(不重复)?
PS:我倾向于使用警报,因为应用程序需要根据数据库查询在动态时间重复所有警报。
【问题讨论】:
-
部分是时区问题。你在哪个时区?顺便考虑一下扔掉长期过时且臭名昭著的麻烦
SimpleDateFormat和朋友,并将ThreeTenABP 添加到您的Android 项目中,以便使用java.time,现代Java 日期和时间API。使用起来感觉好多了。
标签: android alarmmanager unix-timestamp milliseconds