AlarmManager 取消()不工作

AlarmManager cancel() not working

这是我第一次 post 来这里。我到处搜索这个话题,但似乎没有任何帮助。当下面的代码被执行时,闹钟仍然响起,但它不应该......这意味着我无法取消闹钟,使我的应用程序对于 API 低于 21 的人无用。知道为什么吗?请帮忙!我应该提一下,当我使用 Android Studio 中的 API22 模拟器(nexus one)尝试此代码时它可以工作,但是当我将它与 API18 模拟器(samsung s3)一起使用时从 genymotion 它没有。

Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 8, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);
am.cancel(pendingIntent);

看起来你在打电话给 cancel() 之前没有给 set() 足够的时间来设置闹钟。

将对 cancel() 的调用放在一个单独的代码块中,这样就不会在 set() 之后立即调用它,它应该可以工作。