当用户在AsyncTask期间更改片段时,应用程序崩溃

时间:2013-10-24 08:42:33

标签: android android-fragments android-asynctask

我遇到了以下问题。在我的应用程序中,我在AsyncTask中加载数据。问题是,当用户现在点击图标打开导航抽屉并打开另一个片段时,应用程序崩溃。当AsyncTask完成后,应用程序不会崩溃。遇到的问题是,当我切换片段时(片段总是相同的,只是依赖于NavigationDrawer项目点击的另一个内容)应用程序崩溃。

我想问题是,异步任务没有完成,我再次调用相同的片段想要显示不同的数据。

那么我的处理方法是什么?用于每个不同视图的不同片段?我认为每次使用相同的片段要容易得多,因为它只是显示不同的数据,但结构,布局等都是一样的。只是它获得的数据是不同的。

我还想过以某种方式“阻止”用户在执行asynctask时执行任何其他操作,但仍然向他显示该应用正在处理。但这不是AsyncTask的定义。

你会怎么做?每个不同的显示器使用不同的片段?或者怎么样?不知怎的?如果用户单击导航抽屉的项目,则asynctask需要停止其所有操作(如果已完成某些操作),然后重新启动所有操作。有办法吗?

请注意,执行异步的片段和调用片段的活动位于两个不同的文件中

3 个答案:

答案 0 :(得分:1)

您可以使用加载屏幕阻止屏幕(不是那么好的UX明智......),或者在更改片段时,可以在destroy或detach方法中取消asynctask。

你没有显示错误,但我猜这个应用程序崩溃了,因为你试图在asynctask onPostExecute方法中访问它并且它不再可用...

答案 1 :(得分:0)

我猜它崩溃是因为你的AsyncTask正在向不存在的类实例发送数据。你应该改变从asynctask接收回调的Class。无论如何,我不能给你一个更好的答案,直到我看到你真正的AsyncTask代码(至少onPostExecute()和onProgressUpdate())

答案 2 :(得分:0)

使用意向服务来做那个问任务意味着在一个意图服务中调用ask任务,一个人能够处理后台任务而不需要挂起UI