在Android Studio中,如果用户不使用notification
,我希望我的应用程序将其发送给用户。Notification
是大火,但总是在我离开活动时和8:00之后]
@Override
protected void onStop() {
super.onStop();
System.out.println("STARTED!");
Intent intent = new Intent(this, Alarm.class);
PendingIntent pendingIntent =
PendingIntent.getBroadcast(this.getApplicationContext(), 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 8);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 1);
alarmManager.cancel(pendingIntent);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
[警报总是在我离开活动时触发一次,并且时间大于8:00;
因为不准确。
文档说:“注:从API 19开始,所有重复的警报都是不精确的。如果您的应用程序需要精确的交付时间,则它必须使用一次精确的警报,如上所述,每次重新安排。targetSdkVersion早于API的旧应用程序19将继续将其所有警报(包括重复警报)视为精确。“
https://developer.android.com/training/scheduling/alarms
如果您想精确确定时间,则必须更改
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
方法。您应该考虑使用不重复警报(alarmManager.setExact method)
。如果您仍要安排重复警报,可以在“接收时警报”方法中重新安排它。