Activity的UI在AsyncTask的onPostExecute上冻结了吗?

时间:2013-04-24 09:27:16

标签: android asynchronous android-asynctask

我使用AsyncTask来请求大量数据。收到后,数据将在onPostExecute方法内处理。处理数据可能需要一段时间。

根据我的理解,AsyncTask是异步的,并且独立于用户界面。

  • 为什么我的活动会冻结onPostExecute
  • 如果Activity方法内的处理时间过长,onPostExecute冻结是否正常?
  • 如何使我的Activity不会冻结onPostExecute

4 个答案:

答案 0 :(得分:2)

  1. 您应该在database , network ,parsing方法中执行所有数据源操作,例如(doInBackground response.etc)。
  2. 如果要在异步任务中更新任何ui更新,请使用onProgressUpdate
  3. 我认为您正在onPostExecute执行任何解析操作。尝试在parsed中过滤或data postexecute(较轻的数据)。

答案 1 :(得分:1)

为什么我的Activity会冻结onPostExecute?

  

根据您的帖子,您需要执行一些耗时的操作   PostExecute方法。在PostEecute上运行在UI线程上,所以它是   好吧你的UI被冻结了。

如果onPostExecute方法内的处理太长,Activity是否正常冻结?

  

是的,是的。您应该在doInBackground方法中执行长操作   (非UI线程)

如何使我的Activity不会冻结onPostExecute?

  

尝试将长时间操作转移到doInBackground方法和   在PostExecute中,只需根据响应更新UI,即可获得   doInBackground方法中的操作。

答案 2 :(得分:0)

确保在doInBackground方法中使用AsynTask方法。

答案 3 :(得分:0)

doInBackground中查看您需要绑定的长时间运行任务,您无法绑定UI控件,例如ButtonImageView等。doInBackground完成后onPostExecute你可以绑定所有需要控制,确保这里[onPostExecute]你没有运行另一项任务。