警报确实在确切的时间运行

时间:2016-10-10 16:01:12

标签: android

  • 我使用下面的代码
  • 在第二天上午8点设置2个闹钟
  • 手机(三星Galaxy 6)早上8点睡着了
  • 警报未在早上8点运行
  • 上午8:50,我按了主页按钮
  • 现在,两个警报都已运行,通知显示在主屏幕上。

我希望通知会在早上8点出现。在上午8点运行警报,我错过了什么?

    notificationIntent.putExtra(MyAlarmReceiver.ALARM_ID, alarmID);
    notificationIntent.putExtra(MyAlarmReceiver.ALARM_TITLE, notifTitle);
    notificationIntent.putExtra(MyAlarmReceiver.ALARM_SUBTITLE, subTitle);
    notificationIntent.putExtra(MyAlarmReceiver.NOTIFICATION_TAG, notificationTag);
    notificationIntent.putExtra(MyAlarmReceiver.NOTIFICATION_ID, notifId);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    final int sdk = android.os.Build.VERSION.SDK_INT;
    if (sdk > android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) {
        alarmManager.setExact(AlarmManager.RTC_WAKEUP, timeInMillis, pendingIntent);
    } else {
        alarmManager.set(AlarmManager.RTC_WAKEUP, timeInMillis, pendingIntent);
    }

1 个答案:

答案 0 :(得分:0)

该平板电脑上使用的Android版本很可能是Marshmallow或更新版本(API 23)。为了触发警报,您​​必须通过调用alarmManager.setExactAndAllowWhileIdle()将其从Doze(空闲模式)优化中排除。