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