使用Handler和 TimerTask ,在java.util.Timer线程执行
Timer负责设定周期
TimerTask负责具体执行任务,对于需要更新UI的部分,发送消息给Handler,新启动了线程
Handler 重写handleMessage方法处理消息 ,更新UI
举例:
Timer timer = new Timer();
Handler handler = new Handler(){
public void handleMessage (Message msg) {
switch (msg.what) {
case TestHandler.GUIUPDATEIDENTIFIER: mImageView.invalidate();
break;
}
super.handleMessage(msg);
}
};
TimerTask task = new TimerTask(){
public void run() {
Message message = new Message();
message.what = TestHandler.GUIUPDATEIDENTIFIER;
handler.sendMessage(message);
}
};
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
timer.schedule(task, 10000);
}
使用Runnable和Handler的postDelayed方法实现,在handler所在线程实现,即使runnable属于其它线程也是在handler所在线程执行
举例:
private Handler handler = new Handler();
private Runnable myRunnable= new Runnable() {
public void run() {
if (run) {
handler.postDelayed(this, 1000);
}
mImageView.invalidate();
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
handler.post(myRunnable);
}
@Override
protected void onDestroy() {
handler.removeCallbacks(myRunnable);
super.onDestroy();
}