Android:从另一个 Activity 中取消闹钟设置

标签 android alarmmanager

我会尽力解释这一点。基本上,我有 Activity 1 使用 ExternalClass 来做各种事情。 Activity 2 还引用了 Activity 1 的所述 ExternalClass 对象。从这两个 Activity 中,我可以使用 AlarmManager 设置警报,但我希望能够从 Activity 1 取消从任一 Activity 创建的所有警报。

所有警报都使用相同的 Intent 和相同的 AlarmManger 设置(均在 ExternalClass 中创建),但是当我在 Activity 1 中单击我应该调用 myAlarms.cancel(intent) 的按钮时,它只会取消已调用的警报使用 Activity 1 类创建。

ExternalClass 在 Activity 2 中通过引用在 Activity 1 中创建的那个类的对象来引用,因此它们应该都使用相同的 ExternalClass 实例。由于设置警报时使用的上下文,我很确定它不会取消警报,但我不知道如何解决这个问题。

最佳答案

为了解决这个问题,我使用了以下代码:

timerAlarmIntent = PendingIntent.getBroadcast(myContext, i, alarmIntent, 0);
ArrayList<PendingIntent> intentArray = new ArrayList<PendingIntent>();
intentArray.add(timerAlarmIntent);
myAM.set(AlarmManager.RTC_WAKEUP, alarmTime, timerAlarmIntent);

我将 requestCode 设置为唯一 ID。这是在一个 for 循环中,i 代表 0, 1, 2...

要取消警报,我必须将每个警报添加到列表中,并在我想取消所有警报时循环遍历列表。

private void cancelAlarms(){
if(intentArray.size()>0){
    for(int i=0; i<intentArray.size(); i++){
        myAM.cancel(intentArray.get(i));
    }
    intentArray.clear();
}

关于Android:从另一个 Activity 中取消闹钟设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7061378/

相关文章:

java - 报警管理器: repeating alarm not always fires

android - 单击按钮时警报管理器关闭

java - 是否可以从 BroadcastReceiver 启动警报对话框?

android - Flexbox 在 Android 4.4.2 的 Android Web 浏览器中不工作

java - android 在创建文件时崩溃

Android - 如何在很长一段时间后(一个月或更长时间)发出警报

android - AlarmManager.setRepeating 是幂等的吗?

Android - 可扩展的 ListView - 使用 ViewHolder 进行优化

java - 在构建 iPhone/Android 应用程序方面需要帮助

android - Espresso - 在 AsyncTask 期间截取屏幕截图