异步操作原因:UI线程不能阻塞,故需要把一些耗时及复杂的操作另起一个线程来处理,为此,android为我们提供了几种方法来处理,常用的为三种:
(1)AsyncTack
(2)handler+message机制
(3)Activity.runOnUiThread(Runnable)
注:AsuncTack,代码量小,实现较简单,一次执行,不需要UI变更;在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来。
但是,有时会碰到在非主UI线程更新视图的需要。这个时候我们有两种处理的方式。一种是Handler一种是Activity中的 runOnUiThread(Runnable )方法。对于第一中方法,是采用传递消息的方式,调用Handler中方法来处理消息更新视图。这种方式对于不是很频繁的调用是可取的。如果更新的较快,则消息处理会一直排队处理,这样显示会相对滞后。这个时候就可以考虑使用第二中方式,将需要执行的代码放到Runnable的run方法中,然后调用runOnUiThread()这个方法将Runnable的对象传入即可。