在Android開發過程中,我們經常有通過子線程來更新界面UI的需求,而android是不允許子線程更新界面的,只能通過主線程來更新界面UI,而且,android開發中,由於要保證主線程的通暢,一般主線程只負責處理界面更新,事件處理,窗體顯示的回調等重要且不耗時的操作,而像連接網絡,io操作等,一般讓子進程負責。
所以,android提供了一種消息機制來實現子線程更新UI的需求,android提供Handler類,用於子線程和主進程交互。在主進程中,聲明實例化一個Handler,並重寫它的handleMessage方法。
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
int i = (Integer) msg.obj;
tView.setText("hello world "+i);
super.handleMessage(msg);
}
};
在子線程中,調用的Handler的sendMessage方法,android主線程就會調用HandleMessage方法來處理。
Thread thread = new Thread(){
@Override
public void run() {
for (int i = 0; i < 1000; i++) {
try {
sleep(500);
} catch (Exception e) {
// TODO: handle exception
}
Message msg = new Message();
msg.obj = i;
handler.sendMessage(msg);
}
super.run();
}
Handler
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11