当应用程序启动时,Android首先会开启一个主线程(也就是UI线程),主线程为管理界面中的UI控件,进行事件分发。
Handler主要接受子线程发送的数据,并用此数据配合主线程更新UI。
handler可以分发Message对象和Runnable对象到主线程中,每个Handler实例,都会绑定到创建它的线程中(一般位于主线程),它有两个作用:
(1)安排消息或Runnable在某个主线程中某个地方执行;
(2)安排一个动作在不同的线程中执行。
下面是我所用到的实例:
Handler handler = new Handler(){
public void handleMessage(android.os.Message msg){
int what = msg.what;
if(what == 100){
startActivity(new Intent(WelcomeActivity.this, MainActivity.class));
finish();
return;
}
switch(what){
case 2:
vPager.setCurrentItem(0);
break;
case 1:
vPager.setCurrentItem(1);
break;
case 0:
vPager.setCurrentItem(2);
break;
}
tv.setText(what + "秒倒计时");
}
};
在上面定义了handler,调用情况如下:
new Thread(){
public void run(){
for(int i = 2; i >= 0; i--){
SystemClock.sleep(1000);
handler.sendEmptyMessage(i);
}
SystemClock.sleep(1000);
handler.sendEmptyMessage(100);
};
}.start();new Thread(){
public void run(){
//SystemClock.sleep(100);
handler.sendEmptyMessage(100);
};
}.start();
本文深入解析Android中的Handler机制,介绍其如何实现主线程与子线程间的通信,以完成UI更新等功能。通过具体实例展示了Handler如何接收子线程数据并更新UI的过程。
875

被折叠的 条评论
为什么被折叠?



