Handler异步更新UI线程界面

1.主线程创建子线程
2.子线程执行耗时操作,执行完后通过Handler发送消息到给Message Queue,覆写handlerMessage(),处理Looper的回调。
3.实例

创建Handler实例覆写handlerMessage()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Handler mHandler=new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
/**
* Looper回调此方法,覆写这个方法
*/
switch (msg.what) {
case RESULT_OK:
/**
* 更新ui
*/
break;

default:
break;
}
}
};

子线程执行异步耗时操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class MyThread extends Thread{
@Override
public void run() {
// TODO Auto-generated method stub
try {
/**
* 执行耗时操作,这里只是暂时睡眠6秒然后更新界面
*/
Thread.sleep(6*10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/**
* 发送消息给Message Queue
*/
mHandler.sendEmptyMessage(RESULT_OK);
super.run();
}

}

创建线程实例并启动线程

/**
 * 启动线程执行耗时操作
 */
new MyThread().start();