如何在用户从最近的应用列表中删除应用时取消警报管理器警报?

时间:2014-10-23 05:52:38

标签: android alarmmanager android-alarms repeatingalarm

根据this问题中的评论:“标准Android只允许您从Android 3.0+上删除该列表中的内容,这样做不会影响您的AlarmManager事件”。

如果用户从最近的应用列表中滑动应用,我想取消闹钟,但似乎我们无法处理从最近的应用列表中滑动应用,其中可以取消闹钟。 我在应用程序中有选项让用户取消执行此代码的警报:

public static void cancelAlarm() {
        if (alarmUp())
        {
            alarmMgr.cancel(pendingIntent);
        }
  }
  public static boolean alarmUp() {
      return (pendingIntent != null);
  }

但强行删除应用时如何取消闹钟?我不想在关闭应用程序时取消闹钟(按后退或主页按钮)。

2 个答案:

答案 0 :(得分:2)

完成此任务需要两个步骤:

  1. 从最近列表中检测应用删除。请参阅What Exactly Happens When You Swipe An Android App From the Recent Apps List?。这是我在这个主题上找到的最好的信息。

  2. 取消闹钟。您的问题假设pendingIntent变量仍保留之前构建的意图。这不会在卸载的活动中工作。相反,构建一个意图"equal to"原始意图("他们的行为,数据,类型,类和类别是相同的"),并取消该意图。

答案 1 :(得分:0)

通过拨打alarm.cancel() OnDestroy()中的Activity可以轻松实现此目的。