android中透过looper+handler方式在子线程中刷新UI
package com.saul;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
/**
* 通过looper+handler方式在子线程中刷新UI
* @author Saul
*
*/
public class UpdateTitle extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ModifyTitle modifyTitle=new ModifyTitle();
modifyTitle.start();
}
class ModifyTitle extends Thread{
TitleEventHandler handler;
public void run(){
Looper mainLooper=Looper.getMainLooper();
handler=new TitleEventHandler(mainLooper);
handler.removeMessages(0);
Message msg=null;
Long currentSecond;
Long previousSecond = 0l;
int time = 5;
while (true) {
currentSecond = (System.currentTimeMillis() / 1000) % 10;
if (currentSecond != previousSecond) {
time--;
if (time < 0) {
break;
}
msg=handler.obtainMessage(1, 1, 1,"当前还剩" + (time + 1) + "秒");
handler.sendMessage(msg);
previousSecond = currentSecond;
}
}
}
}
class TitleEventHandler extends Handler{
public TitleEventHandler() {
super();
}
public TitleEventHandler(Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
setTitle((String)msg.obj);
}
}
}