如何创建将在几个月后调用的警报?
How to create an alarm which will be called after several months?
我刚刚了解了 AlarmManager 并尝试使用它。据我了解,警报是通过说需要在 X 毫秒后调用来设置的,如下面的代码所示:
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (sec * 1000), pendingIntent);
但是,我担心系统在长时间运行时的性能。
如果我需要设置10个月后激活通知的闹钟,我该怎么办?我是否需要将所需的时间段转换为毫秒并以相同的方式传递?或者还有其他更有效的长时间工作方式?
是的,你必须以毫秒为单位传递它。我不确定您为什么会担心性能,传递大值而不是小值不会导致性能损失。你唯一真正的问题是,在 X 个月里做,一个月的长度是不规则的。我会为结束时间创建一个 Calendar 对象并将其转换为毫秒以使其正确。
这样使用
int month = 2;
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY * 30*month, pendingIntent);
如何设置长时间闹钟上面已经讨论过了。
您只需要检查一下,如果设备重新启动,您会重置闹钟,因为一旦系统关闭,闹钟就会被取消。
link here
我刚刚了解了 AlarmManager 并尝试使用它。据我了解,警报是通过说需要在 X 毫秒后调用来设置的,如下面的代码所示:
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (sec * 1000), pendingIntent);
但是,我担心系统在长时间运行时的性能。
如果我需要设置10个月后激活通知的闹钟,我该怎么办?我是否需要将所需的时间段转换为毫秒并以相同的方式传递?或者还有其他更有效的长时间工作方式?
是的,你必须以毫秒为单位传递它。我不确定您为什么会担心性能,传递大值而不是小值不会导致性能损失。你唯一真正的问题是,在 X 个月里做,一个月的长度是不规则的。我会为结束时间创建一个 Calendar 对象并将其转换为毫秒以使其正确。
这样使用
int month = 2;
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY * 30*month, pendingIntent);
如何设置长时间闹钟上面已经讨论过了。 您只需要检查一下,如果设备重新启动,您会重置闹钟,因为一旦系统关闭,闹钟就会被取消。
link here