我正在构建一个必须在一段时间后显示通知的应用程序,因为我使用了AlarmManager。
要每15分钟收到一次通知,我们必须这样做:
mgr.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime(), 900000, pi);
有一天,我们将
86400000
作为值。我的想法是每周也发出一个通知(将86400000乘以7),每个月(每个86400000乘以28)进行通知。问题是在月份常量中,我有:The literal 2419200000 of type int is out of range
无法使用AlarmManager进行长时间通知?有解决方案吗?
谢谢。
编辑:
if (Integer.valueOf(choix_notif) == 0)
{
mgr.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime(), 86400000, pi);
Log.d("DAY_REPEATING","OK");
}
else if (Integer.valueOf(choix_notif) == 1) {
mgr.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime(), 604800000, pi);
Log.d("WEEK_REPEATING","OK");
}
else if (Integer.valueOf(choix_notif) == 2) {
mgr.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime(), 2419200000L, pi);
Log.d("MONTH_REPEATING","OK");
最佳答案
有可能(因为setRepeating()
接收long作为参数),而不是2419200000
,您应该编写2419200000L
,因为2419200000对于int而言太大,并且任何整数常量都被视为int
,因此您需要添加L
表示此数字很长。