gpt4 book ai didi

android - 取消具有唯一 ReqestCode 的 PendingIntent

转载 作者:行者123 更新时间:2023-11-30 02:39:14 33 4
gpt4 key购买 nike

我正在尝试取消一个 pendingIntent,因此始终只有一个。我的 requestCode 是“1”或“2”,具体取决于服务是启动还是停止。开始警报的 PendingIntent 如下所示(停止几乎相同):

Intent i = new Intent(context, Service.class);
i.setAction("start");
PendingIntent pi = PendingIntent.getService(context, SaveSchedulePrefs.getStartReqCode(context), i, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.cancel(pi)

新的 pendingIntent 看起来像这样:

alarmManager.setExact(AlarmManager.RTC_WAKEUP, mTime, pi);

根据我的阅读,pendingIntent 必须完全相同才能被取消,并且 requestCode 为 1 应该满足该需求。这实际上可能按预期工作,但警报重新触发多日的日志文件显示以下两个启动/停止警报(每个发生 7 次):

RTC_WAKEUP #0: Alarm{b216a768 type 0 com.myapp.myRinger}
operation=PendingIntent{b2169318: PendingIntentRecord{b20e5820 com.myapp.myRinger startService}}
RTC_WAKEUP #0: Alarm{b2172ed0 type 0 com.myapp.myRinger}
operation=PendingIntent{b2172ec0: PendingIntentRecord{b20e6160 com.myapp.myRinger startService}}
com.myapp.myRinger +856ms running, 14 wakeups:
+759ms 7 wakes 7 alarms: act=stop cmp={com.myapp.myRinger/com.myapp.myRinger.Service}
+758ms 7 wakes 7 alarms: act=start cmp={com.myapp.myRinger/com.myapp.myRinger.Service}

我在日志中看到的是已经激活的警报的历史记录,还是没有一个被取消?

最佳答案

看起来您的原始 PendingIntent 已获得 ACTION="start"或 ACTION="stop"。在您发布的代码中,PendingIntent 不包含 ACTION。在这种情况下它不会匹配(因此不会取消警报)。

为了使 PendingIntent 匹配,以下内容必须匹配:ACTION、DATA、COMPONENT。 Intent extra 不会进行比较,并且会出于匹配目的而被忽略。

关于android - 取消具有唯一 ReqestCode 的 PendingIntent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26008400/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com