经常遇到这个错误
Only the original thread that created a view hierarchy can touch its views。
这是因为在工作线程更新了UI,可以使用Handle来处理。
如何区分:
Log.d(TAG, " original thread "+Looper.getMainLooper().getThread().getId());
Log.d(TAG, "currrent thread "+Thread.currentThread().getId());
如果你对于Android的Thread+Handler方式感觉繁琐,不妨试试Activity提供的另外一种简单的方法runOnUiThread,runOnUiThread可以帮助你在线程中执行UI更新操作,我们只需要在线程中写上类似
MyActivity .this.runOnUiThread(new Runnable() {
@Override
public void run() {
// refresh ui 的操作代码
}
});
这里需要注意的是runOnUiThread是Activity中的方法,在线程中我们需要告诉系统是哪个activity调用,所以前面显示的指明了activity。