1、Handler是运行在主线程(UI线程)中的,在主线程和子线程间可以通过Message消息队列,实现数据的传递或者页面的更新。Handler可以分发Message对象和Runnable对象到主线程中,每个Handler实例,都会绑定到创建它的线程中(一般是主线程)。
2、Handler中分发消息的一些方法
post(Runnable)
postAtTime(Runnable,long)
postDelayed(Runnable long)
sendEmptyMessage(int)
sendMessage(Message)
sendMessageAtTime(Message,long)
sendMessageDelayed(Message,long)
以上post类方法允许你排列一个Runnable对象到主线程队列中,sendMessage类方法, 允许你安排一个带数据的Message对象到队列中,等待更新。
private Handler handler = new Handler(){
public void handleMessage(Message msg){
if(msg.what==UPDATE){
tv.setText(String.valueof(msg.obj));
}
super.handleMessage(msg);
}
};
public viod sendMessage{
new Thread(){
public void run(){
Message msg= new Message();
msg.what=UPDATE;
msg.obj="new number is"+i;
handler.sendMessage(msg);
}
}.start();
}
以上是Handle处理Message的实例,同样,可以对Runnable对象进行处理:
public class Welcom extends Activity{
protected void onCreated(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentview(R.layout.welcome);
MyRunnable r =new MyRunnable();
hanler.postDelayed(r,2000);
//handler.postAtTime(r,System.currentTimeMillions()+1000);
}
Handler handler = new Handler();
class MyRunnable implements Runnable{
public void run(){
Intent intent = new Intent();
intent.setClass(welcom.this, secondActivity.class);
startActivity(intent);
}
}
}