从最近的应用列表中清除应用后,PendingIntent被取消

时间:2017-04-17 16:46:47

标签: android alarmmanager android-pendingintent

我的闹钟应用使用AlarmManager来设置闹钟,当我从最近的应用列表中关闭应用时,PendingIntent被取消时出现问题(偶尔会在KitKat上发生设备并且几乎经常在Marshmallow上,即使几分钟前设置了闹钟(因此设备没有睡着)。

以下是我设置闹钟的方法:

Calendar alarmCalendar = getCalendarForDay(day);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);

PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
            (id * 10000 + day.position), getIntent(context, day.position), FLAG_UPDATE_CURRENT);

long intervalMsec = alarmCalendar.getTimeInMillis();
if (android.os.Build.VERSION.SDK_INT >= 19) {
        alarmManager.setExact(AlarmManager.RTC_WAKEUP, intervalMsec, pendingIntent);
} else alarmManager.set(AlarmManager.RTC_WAKEUP, intervalMsec, pendingIntent);

getIntent():

private Intent getIntent(Context context, int dayPosition) {
    Intent intent = new Intent(context, AlarmReceiver.class);
    intent.putExtra(MainActivity.PACKAGE_NAME + ".alarmId", id);
    intent.putExtra(MainActivity.PACKAGE_NAME + ".dayPosition", dayPosition);
    return intent;
}

我花了很长时间浏览这个网站并找到了一些解释herehere(基本上说它是正常的,有些制造商只是这样做),但是他们都没有真正帮助过我处理这个问题。尽管如此,我确信可以解决,因为有些应用程序适用于所有设备(例如Timely和其他流行的闹钟)。

那么有人对这些警报如何实际处理AlarmManager有任何疑问吗?为什么他们的意图永远不会被取消?

0 个答案:

没有答案