在Android 2.2中使用具有活动的片段时,应用程序崩溃

时间:2012-01-12 16:34:26

标签: android crash android-asynctask android-fragments

我正在开发一个应用程序,它可以从数据库中加载大量数据,因此我使用的是AsyncTasks。

以下是我正在创建的内容的整体视图。我有2个活动,比如ActivityA和AcitivityB。 ActivityB有许多从数据库加载数据的片段。所以我为每个加载数据的片段使用了不同的AsyncTask。

现在我的问题是,当片段加载回到ActivityA时我按下我的设备的按钮,应用程序崩溃,因为ActivityB不再可用。我该如何解决这个问题?

我正在使用Android 2.2的支持库。

3 个答案:

答案 0 :(得分:0)

我得到了答案。只需将所有代码添加到try catch块,即使活动/片段引发异常,也会阻止应用程序崩溃。

答案 1 :(得分:0)

我不是尝试使用catch块来吞下异常的忠实粉丝。你没有解决根本原因。

以下是我认为正在发生的事情。

当您按下后退按钮返回ActivityA时,活动B中的片段视图将被销毁,但您启动的AsyncTask将继续执行,完成后,将从UI调用AsyncTask的onPostExecute(result)方法线。我假设您更新片段视图。但是如果视图已经被破坏,你会得到一个NullPointerException,这就是为什么在尝试更新它们之前检查片段的视图为null总是一个好主意。

答案 2 :(得分:0)

最好在进程在后台运行时显示ProgressDialog并使其不可取消,这样当您单击后退按钮时,它将不允许任何操作。在onPreExecute()中显示对话框并在onPostExecute()中关闭。在后台加载数据时无法返回导航。您将获得有关UI线程的更新,并且不会出现任何异常以及应用程序崩溃。