子线程操作UI
Handler
实现了一个Clock类来学习
/**
* 实现一个时钟类 实时更新TextView中的时间信息
* 创建时必须传入需要更新的TextView
* 在UI线程中注册clockHandler实现回调更新
*/
public class Clock {
public Handler clockHandler;
public TextView textClock;
private boolean isClockStared = false;
private ClockThread clockThread = null;
// 构造
public Clock(TextView aTextClock) {
textClock = aTextClock;
clockHandler = new ClockHandler();
}
// 时钟UI更新方法
public void clockUpdate() {
textClock.setText(new Date().toString());
}
// 启动clock线程
public void clockStart() {
if (clockThread == null) {
clockThread = new ClockThread();
}
if (!isClockStared) {
clockThread.start();
isClockStared = true;
}
}
// 关闭clock线程
public void clockStop() {
clockThread.interrupt();
clockThread = null; /*内存*/
isClockStared = false;
}
class ClockThread extends Thread {
public void run() {
while (!isInterrupted()) {
try {
clockHandler.sendEmptyMessage(666);
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
Thread.currentThread().interrupt();
}
}
}
}
class ClockHandler extends Handler {
public void handleMessage(Message msg) {
if (msg.what == 666) {
clockUpdate();
}
}
}
}
主要需要注意 ClockHandler类
实际使用时,在UI线程中,创建一个 Handler的引用,并绑定到Clock实例的clockHandler即可
广播
…
异步任务
…