gpt4 book ai didi

android - 如何防止服务因为未捕获的异常而被 Android 杀死?

转载 作者:行者123 更新时间:2023-11-29 22:08:50 32 4
gpt4 key购买 nike

我正在调查是否有任何方法可以防止 android 服务因未捕获的异常而被杀死。
我们有 10 个 UI 应用程序与 5-6 个服务通信。该平台是Android 2.2。
由于不可预见的情况,服务中的某些逻辑时不时会抛出异常。这导致这些服务被那些烦人的 ANR 弹出窗口杀死。在我们致力于解决这些异常的根本原因的解决方案的同时,我想防止 Android 终止有问题的服务。

看起来我可以为服务中的所有线程注册 Uncaught 默认异常处理程序。这只是让我有机会记录有关异常的内容。那很好。我发现很多帖子都使用这种技术将崩溃信息记录到一个文件中供以后使用。人们建议不要抛出原始异常以防止 ANR 弹出窗口。我还发现一些文章表明它可以使您的服务处于半死状态。正确的做法是终止服务并重新启动。杀死并重新启动不是我感兴趣的选项。

如果你不抛出异常,我不太理解半死状态部分。我将进一步调查。同时我想知道是否有人有建议。
我的目标是防止 ANR 弹出窗口。 我希望我的代码决定是否重启服务,而不是 Android 框架为我决定。

我想知道的是:
1) 您可以更改 list 中的任何标志以防止服务被框架代码杀死吗?

2) 是否有任何方法可以在服务中覆盖,让您处理未捕获的异常,但仍然让服务线程返回到等待客户端的下一个请求的状态?

感谢您的建议。

视频专家

更新:
Uncaught 默认异常处理程序在这里没有帮助。它让您有机会记录一些东西,但服务线程仍然存在。

您需要更改 android 框架,以便它不会终止进程。 android 框架中的 ActivityManagerService.java 有不同的阈值,服务可以在没有任何客户端的情况下运行多长时间,您可以拥有多少后台 Activity/服务,服务超时和 ui 初始化。我们提高了这些值。

最佳答案

开发人员帮助防止其服务被终止的一种常见方法是使用持久通知(在通知栏中),通常通过设置将其打开。因此,如果用户在系统终止服务时遇到问题,他们可以打开通知。

关于android - 如何防止服务因为未捕获的异常而被 Android 杀死?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10155330/

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