0

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

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

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

我还考虑过以某种方式“阻止”用户在执行异步任务时执行任何其他操作,但仍向他显示应用程序正在处理。但这不是 AsyncTask 的定义。

你会如何处理它?为每个不同的显示使用不同的片段?或者怎么做?以某种方式阻止?如果用户单击导航抽屉的项目,则 asynctask 需要停止其所有操作(如果已完成某些操作),然后重新开始执行所有操作。有没有办法做到这一点?

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

4

3 回答 3

1

您可以使用加载屏幕阻止屏幕(不是那么好的 UX 明智...),或者您可以在更改片段时取消异步任务,在销毁或分离方法中。

您没有显示错误,但我猜应用程序崩溃是因为您试图访问 asynctask onPostExecute 方法中的某些内容并且它不再可用...

于 2013-10-24T08:46:27.663 回答
0

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

于 2013-10-24T08:58:30.503 回答
0

使用意图服务来执行询问任务意味着在意图服务中调用询问任务,该服务能够处理后台任务而无需挂起 UI

于 2013-10-24T08:59:31.823 回答