为什么我关闭活动时总是发出警报

问题描述 投票:0回答:1

在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;

java android alarmmanager
1个回答
0
投票

因为不准确。

文档说:“注:从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)。如果您仍要安排重复警报,可以在“接收时警报”方法中重新安排它。

© www.soinside.com 2019 - 2024. All rights reserved.