gpt4 book ai didi

android - DialogFragment 导致空指针崩溃

转载 作者:搜寻专家 更新时间:2023-11-01 09:06:22 25 4
gpt4 key购买 nike

在我的应用程序中,我有几个 AsyncTasks 执行 http 请求。如果任务失败,我会向用户显示一个 DialogFragment。

ErrorDialogFragment newFragment = ErrorDialogFragment.newInstance(R.string.dialog_message_error);
newFragment.show(getFragmentManager(), ConstantHandler.DIALOG_ERROR);

问题是用户有时会在AsyncTask完成之前退出Activity或Application,导致getFragmentManager出现空指针异常。

我的问题是,除了跟踪每个 fragment 和 Activity 是否仍在运行之外,是否有办法避免这种情况?

最佳答案

我以前遇到过同样的问题。我在某处的博客上看到的一个相当不错的答案(我忘记了)如下:

为您的 AsyncTasks 提供对当前上下文的引用。当您的应用最小化/旋转时,使用 onRetainNonConfigurationInstance()getLastNonConfigurationInstance() 保存您的 AsyncTasks。然后,当您的应用程序重新启动时,在 onCreate() 中,您可以检查是否有从 getLastNonConfigurationInstance() 传回的 AsyncTask。如果有,请将其上下文设置为您 Activity 的新上下文。现在,您的 AsyncTask 将能够访问新的 Context 并完成其任务。

为了彻底,您可能还想在使用 onRetainNonConfigurationInstance() 保存 AsyncTasks 之前将上下文设置为 null。然后在您的 AsyncTask 中,在尝试使用它做某事之前检查 Context 是否为 null。如果 AsyncTask 在后台尝试使用上下文,这将阻止应用程序崩溃。

关于android - DialogFragment 导致空指针崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11608080/

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