前一阵子调用线程的时候异步UI不更新,现在发现了问题:
</pre><pre name="code" class="java">handler.post(new Runnable() {
@Override
public void run() {
try {
} catch (Exception e) {
e.printStackTrace();
}
}
});
handler.post 一个Runnable 接口时,由于只重写了run方法,没有调用start,
故,并没有启动新的线程,其实仍然可以看做在主线程中操作,
可以更新UI,但是,如果遇到耗时操作,UI界面就显现不出来了
结果就会导致卡顿的现象,用户体验极差,还得防止他们做奇葩操作.
两天没找到解决办法,后来查到资料,才知道是这个原因.
解决办法就是:再开一个thread
在thread 中调用handler.post.
开thread时,记得调用looper.prepare.
在A线程中for 循环读取cursor进行上传操作,由于是调用handler.post ,发现A先走完之后
for循环还没走完,接下来的for循环中的内容就不走了,所以得让A等待一下,之后再post下一个,
暂时没找到好的解决办法,只能在for循环中thread.sleep了.