当其他任务正在运行时,AsyncTask永远不会完成

时间:2011-02-07 15:22:15

标签: android android-asynctask

在我的应用中,我立即向用户显示一个菜单屏幕,然后使用AsyncTask从磁盘加载一些数据。如果这是所有应用程序必须执行的,加载大约需要3秒。当用户点击菜单选项并且尚未加载数据时,会出现“请稍候,加载”屏幕。

我有两个问题:

  • 我最近在我的应用中添加了广告,并且发现这有时会使我的应用挂起,因为AsyncTask永远不会完成加载。似乎正在发生的事情是,广告横幅(我正在使用AdMob并且当AdMob偶尔展示AdSense广告时会发生这种情况)通过播放简单动画来使用资源而AsyncTask永远无法完成

  • 我想在菜单屏幕上播放一个简单的循环动画(例如,进行视图旋转),这使AsyncTask花费大约5倍的时间来完成,这使得背景加载毫无意义。

如何避免我的后台数据从未完成加载或具有如此低优先级的情况需要很长时间?

我似乎无法找到提高AsyncTask优先级的方法。

1 个答案:

答案 0 :(得分:0)

在AsyncTask的onPostExecute(List<type> result)中,检查结果是否不等于null(意味着对话框被解除),然后在主类中填充结果。

修改

实际上你必须将结果从doInBackground()发送到onPostExecute(). Then only it will call onPostExecute()`。