gpt4 book ai didi

调用完成后 Android 应用程序崩溃

转载 作者:行者123 更新时间:2023-11-30 00:20:36 24 4
gpt4 key购买 nike

根据我的理解,这是我不希望发生的事情。

在我的应用程序中,我执行 () 一个 AsyncTask 可能需要不到 2-3 秒。在那个 AsyncTask 中,我有 runOnUiThread(),它更新了几个 UI 控件值。

如果我点击注销按钮,它会执行 Activity 的 finish() 之前,一切正常。

我得到空指针异常,findViewById 返回 null。我可以在更新前添加 null 检查,但考虑到使用的 UI 屏幕和 AsyncTasks 的数量,我最终会进行大量检查。

为什么UI线程在调用finish()后还在执行?

这种情况的最佳解决方案是什么?仅当 AsyncTask 完成与调用 finish() 之间的时间差完全一致时才会出现问题。

问候,

戒色

最佳答案

AsyncTask 在后台运行,直到它正在执行的作业完成,因此对当前 Activity 调用“完成”不会终止它。如您所说,添加空检查会很麻烦,所以我要做的是在调用 finish() 之前取消 asyncTask。

if (asyncTaskInstatnce != null && !a.isCancelled())
a.cancel(true);

关于调用完成后 Android 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46373620/

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