我正在开发一个应用程序,它可以从数据库中加载大量数据,因此我使用的是AsyncTasks。
以下是我正在创建的内容的整体视图。我有2个活动,比如ActivityA和AcitivityB。 ActivityB有许多从数据库加载数据的片段。所以我为每个加载数据的片段使用了不同的AsyncTask。
现在我的问题是,当片段加载回到ActivityA时我按下我的设备的按钮,应用程序崩溃,因为ActivityB不再可用。我该如何解决这个问题?
我正在使用Android 2.2的支持库。
答案 0 :(得分:0)
我得到了答案。只需将所有代码添加到try catch块,即使活动/片段引发异常,也会阻止应用程序崩溃。
答案 1 :(得分:0)
我不是尝试使用catch块来吞下异常的忠实粉丝。你没有解决根本原因。
以下是我认为正在发生的事情。
当您按下后退按钮返回ActivityA时,活动B中的片段视图将被销毁,但您启动的AsyncTask将继续执行,完成后,将从UI调用AsyncTask的onPostExecute(result)方法线。我假设您更新片段视图。但是如果视图已经被破坏,你会得到一个NullPointerException,这就是为什么在尝试更新它们之前检查片段的视图为null总是一个好主意。
答案 2 :(得分:0)
最好在进程在后台运行时显示ProgressDialog
并使其不可取消,这样当您单击后退按钮时,它将不允许任何操作。在onPreExecute()
中显示对话框并在onPostExecute()
中关闭。在后台加载数据时无法返回导航。您将获得有关UI线程的更新,并且不会出现任何异常以及应用程序崩溃。