我正在构建一个必须在一段时间后显示通知的应用程序,因为我使用了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表示此数字很长。

10-07 23:11