Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 重复通知不重复_Android - Fatal编程技术网

Android 重复通知不重复

Android 重复通知不重复,android,Android,我想从设置之日起每周做一次通知。它会在被呼叫时初始化,但不是第二次(我快速转发电话时钟,看它是否会呼叫,但它没有)。它必须是7*日历。getTimeInMillis()。否则我怎么才能把它定为每周一次呢 Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, mHour); calendar.set(Calendar.MINUTE, mMinute

我想从设置之日起每周做一次通知。它会在被呼叫时初始化,但不是第二次(我快速转发电话时钟,看它是否会呼叫,但它没有)。它必须是7*日历。getTimeInMillis()。否则我怎么才能把它定为每周一次呢

        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, mHour);
        calendar.set(Calendar.MINUTE, mMinute);
        AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(this, OnBootReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
        //am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

        am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 7*calendar.getTimeInMillis(), pendingIntent);
广播接收器类别:

    nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
CharSequence from = "from";
CharSequence message = "message";
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(), 0);
Notification notif = new Notification(icon, tickerText, when);
notif.setLatestEventInfo(context, from, message, contentIntent);
nm.notify(1, notif);

7*calendar.getTimeInMillis()
确实是个问题,因为
calendar.getTimeInMillis()
返回自1970年以来的时间,所以您基本上将重复设置为从现在起的~42.5*7。您需要设置偏移量,例如7(天)*24(小时)*60(分钟)*60(秒)*1000(毫秒)


在我们清除该错误后-我建议您避免使用重复,而是在每次调用的代码完成其工作时设置一个新的警报,因为重复机制可能存在一些问题。

您不想要当前日期*7您想要:

7天=60480 000毫秒

这是

i、 e


7*现在的日期会给你一些不可思议的东西,比如5000年,我实际上想把它包括在这个问题中。我的下一个问题是广播接收机。我想你是在谈论这个?这与我能想到的任何AlarmManager的使用有关,包括广播接收器。哦,我明白你的意思。忽略设置重复,每次只使用设置。是的,根据我的经验,它更好。
 am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 604800000L, pendingIntent);