AsyncTask中的复杂代码冻结了progressBar

时间:2016-11-01 12:51:44

标签: android-asynctask

我在AsyncTask中有一个复杂的代码,它在SQLite上进行了很多I / O并且计算量很大。这段代码很长,这就是为什么我没有在这里复制它。当我的代码被评论时AsyncTask工作得很好并且正确地更新了进度条,但是使用我的代码,进度条被冻结,直到我的代码结束。 任何人都可以给我建议尊重,编写像我一样的程序,当然,工作线程和进度条运作良好? 我完成了我的项目。在发展阶段,我没有问题。但在使用真实数据进行阶段测试时,我遇到了这个问题。我在这个论坛上讨论的AsyncTask上已经有三天时间,但我的帮助和我都不知道该怎么办。我也冷冻了。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

问题得到解决。 显然我的代码使用了大量的CPU时间,并没有为UIThread留出足够的时间来更新屏幕。 所以我设置了在另一个线程中使用Handler加入SQLite的代码部分和一个延迟10ms的CountDownLatch来启动线程。并且这个延迟允许android必须释放UIThread刷新的时间。这样,publishProgress就开始工作了。现在我想知道这是否是一个很好的解决方案。