gpt4 book ai didi

android - 如何让 Android BroadcastReceiver 抵抗意外停止?

转载 作者:行者123 更新时间:2023-12-03 17:22:11 26 4
gpt4 key购买 nike

我正在使用 AlarmManager 每 2 分钟发生一次后台 HTTP 请求,这可能会根据响应向用户发出通知。此代码在每个请求之前运行,调度后续请求:

AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, MyReceiver.class);
manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP
, SystemClock.elapsedRealtime() + CHECK_INTERVAL
, PendingIntent.getBroadcast(context, 0, intent, 0));

有时会发生异常,但根据日志,它是在调用 manager.set 之后发生的。已成功完成。不幸的是, I'm finding the alarm does not fire意外停止后。更正:没有触发,可能是因为用户确认“意外弹出”对话框需要超过 2 分钟。

有没有办法让我的"dispatch"具有抗崩溃性?用户在看到意外停止消息后并不总是重新启动此特定应用程序。

由于大多数人无法在 Google Play 商店中使用该应用程序,因此我正在考虑实现错误报告和 auto-restart via Thread.setDefaultUncaughtExceptionHandler() ,但我目前还没有准备好发展那么远;因为这样我们就失去了通过 Google Play 获得本地错误报告的可能性。有没有更好的方法让 HTTP 请求在崩溃后继续,或者是这样吗?

我知道修复崩溃的原因也会解决它,但我并不完美,所以我们应该有一个后备计划。

最佳答案

正如 CommonsWare 建议的那样,使用 setRepeating作品。即使在意外停止之后,这种情况也会继续。此外,它还简化了我的代码。

使用前请参阅 Android 的文档,从 API 19 开始,现在映射到 setInexactRepeating .这仍然会平均每 2 分钟运行一次警报,但是来自各种应用程序的警报会被转移到一个间隔(在我的情况下为 2 分钟),以便将多个警报组合在一起。这样可以减少唤醒次数并最大限度地延长手机 sleep 时间,从而延长电池生命周期。

关于android - 如何让 Android BroadcastReceiver 抵抗意外停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30470202/

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