近段时间比较空闲,也有时间让我自己冲冲电~
今天和大家分享的是android 中子线程控制UI线程的几个常用方法,因为android是单线程执行的,如果你在子线程中操作有UI线程就会报错了以下错误:Only the original thread that created a view hierarchy can touch its views.
第一种:(简单明了)
XXXActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
//do something
setTitle("控制UI线程")
}
});
第二种: Runnable + Handler.postDelayed(runnable,time)
private Handler handler = new Handler(); private Runnable myRunnable= new Runnable() { public void run() { if (run) { handler.postDelayed(this, 1000); count++; } tvCounter.setText("Count: " + count); } };
然后在其他地方调用
handler.post(myRunnable);
handler.post(myRunnable,time);
第三种: Handler(子线程调用Handler的handle.sendMessage(msg);Handler handle = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
mTextView.setText(来自网络的文字);
}
};
class MyThread extends Thread {
@Override
public void run() {
// 耗时操作
loadNetWork();
Message msg = new Message();
handle.sendMessage(msg);
super.run();
}
}
第四种:AsyncTask
(这块在接下去的一篇文章详细的描述)