gpt4 book ai didi

android - 在 Android ANR 对话框中按 "Close App",关闭并立即重新启动应用程序

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

我面临一个奇怪的(在我看来)问题。我的应用很少产生ANR。我正在尝试尽可能减少它们,到目前为止我已经成功了。但是,当 ANR 对话框确实出现时,如果我(或任何用户)决定通过按“关闭应用程序”而不是等待它获得响应来关闭应用程序,然后应用程序关闭,但立即重新启动,显示与显示 ANR 对话框时相同的 Activity 。

很麻烦,因为当用户正常启动我的应用程序时,他/她会经历一定的 Activity 序列,每个 Activity 负责执行一些任务,创建一些对象等。但是当应用程序自动重新启动并且用户发现自己处于与显示 ANR 对话框时相同的 Activity 中时,这一系列 Activity 尚未发生,因此某些事情required 丢失,因此我的应用程序崩溃。可能是对象为 null,int 的值错误,某些字符串可能为空等。这里的确切问题并不重要重要的是应用程序没有经历用户打开时通常执行的一系列 Activity ,设置所有这些对象、变量等,在到达此 Activity 之前它稍后需要。

另一方面,如果我的应用程序在任何时候崩溃,我有一个 UncaughtExceptionHandler 以“干净的方式”关闭我的应用程序。 相当于用户按下“概览”按钮,然后通过按下“x”或向左/向右滑动来关闭应用。因此,如果用户想再次使用该应用程序,他/她将再次启动该应用程序,该应用程序将按照其应有的 Activity 顺序进行操作,一切都会按预期进行。然而,当出现 ANR 对话框时,我无法控制按下“关闭应用程序”实际上做了什么......

或者我可以吗?

这是 ANR 对话框的正确行为还是我在这里遗漏了什么?还有其他人遇到过这种情况吗?在用户选择对话框中的“关闭应用程序”选项后,有什么方法可以让我的应用程序关闭并保持关闭状态? (我猜不是)。

提前谢谢你,如果我在这里遗漏了一些明显的东西,请尽量保持温和! :)

最佳答案

这取决于您的应用程序中可能存在的“前景”或“持久”方面。看看AppErrors.java

handleAppCrashLocked() 在终止您的进程之前被调用 - 您可以看到此处定义的条件,在这种情况下 Activity/服务将重新启动。检查这是否适用于您。

其次,如果您不在使用 AOSP,则无法修改重启应用程序的重启 Intent 。因此,您唯一的选择是检测这是崩溃恢复并启动适当的屏幕。当您的应用程序通过崩溃恢复启动与常规启动时,您获得的 Intent 会有所不同。

如果您正在使用 AOSP,您可以从 AppErrors.java 中找到踪迹

关于android - 在 Android ANR 对话框中按 "Close App",关闭并立即重新启动应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51061278/

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