gpt4 book ai didi

android - 我的安卓闹钟被取消了,不是我取消的

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:28 25 4
gpt4 key购买 nike

我的应用程序使用闹钟计时器每 2 分钟左右检查一次服务器上的更新。我使用这个创建了一个循环计时器:

    alarmIntent = new Intent(context, OnWakeUpReceiver.class);
PendingIntent pIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0);

mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 120000, pIntent);

对于绝大多数人来说,这很好用。但少数人报告说该应用程序突然停止 self 更新。我做了一个简单的检查,看看计时器是否存在:

    PendingIntent pIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntent.FLAG_NO_CREATE);   

果然,当应用程序不再更新时,它返回 null,表示不存在计时器。

我的应用程序一直在控制闹钟计时器(在没有网络连接时将其关闭,然后在有网络连接时重新打开,以及其他情况)。我想也许我以某种方式将其关闭而不是重新打开它。所以我创建了一个版本,我删除了取消闹钟计时器的所有调用。所以我的应用程序不再有任何方法可以取消该计时器。但仅仅过了几天,闹钟定时器又一次消失了,应用程序也没有更新。

我没能在我自己的系统上做到这一点,也无法让别人找到一种万无一失的方法在他们的系统上重复它。我想知道 Android 系统是否正在取消它(尽管这会阻止我的应用程序再次运行),但在一个问题较多的系统上,他说他几乎没有在手机上运行任何东西。

我不知道 task killers 是否也可以杀死闹钟计时器,但我知道在我想到 SDK 8 之后,task killers 无论如何都不能再这样做了,而且我在版本 8 之后一直遇到问题。以及在不运行任务 killer 且未 Root 的系统上。

我什至创建了一个“看门狗”闹钟定时器,它运行一个接收器来检查主应用程序定时器是否已停止更新。我发现那个计时器也被取消了(它没有提供进一步的“上次运行”更新,并且从未注意到主应用程序已停止)。

这个问题对我来说是一个应用 killer 。任何人都可以建议任何方式来尝试调试发生的时间和发生的事情吗?当计时器被取消时,系统是否有任何日志条目,无论是系统还是其他?我讨厌它就这么蒸发得无影无踪。

最佳答案

我不能说这是完整的答案,但这两个变化似乎已经停止了很多被取消的警报:

1) 我正在执行未决 Intent 并取消它,而不是当我出于任何原因不得不取消警报时在警报管理器上调用 cancel() 。随着时间的推移,我不知道这是否会混淆警报管理器或其他什么,但它可能不是很好。现在我取消警报管理器以及未决 Intent 。

2) 我的一位用户提到当他们点击 Clear RAM 时,它如何禁用我的服务。显然,有些手机带有任务管理器,为它们提供了一个漂亮的 Shiny 按钮,可以让它们清除内存/RAM。该按钮甚至清楚地表明,按下它会导致某些应用程序停止工作……但用户仍然会捣乱它。我不知 Prop 体是怎么回事,但这似乎大多数时候都能消除我的警觉。所以我发布了一个很大的通知让人们停止这样做,从那以后事情真的平静了下来。糟糕的是,如果用户按下了死亡的神奇按钮,或者如果真的出了什么问题,我将永远不会真正知道下次我收到禁用的警报。

但不管怎样,现在情况好多了。

关于android - 我的安卓闹钟被取消了,不是我取消的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9809134/

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