我希望从设置之日起每周完成一次通知。它在被调用时初始化,但不是第二次。(我快速转发电话时钟,看它是否会调用它,但它没有)。它必须是7 * calendar.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);
BroadCastReceiver类:
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);
答案 0 :(得分:1)
7*calendar.getTimeInMillis()
确实是问题,因为calendar.getTimeInMillis()
返回自1970年以来的时间,因此您基本上将重复设置为 ~42.5 * 7 年。您需要设置偏移量,例如 7(天)* 24(小时)* 60(分钟)* 60(秒)* 1000(毫克)。
在我们清除之后 - 我建议你避免使用重复,而是在每次调用的代码完成其工作时设置一个新的警报,因为重复机制可能存在一些问题。
答案 1 :(得分:0)
你不想要你想要的当前日期* 7:
7天= 604 800 000毫秒
这是how many milliseconds are in 7 days
即
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 604800000L, pendingIntent);