http://blog.csdn.net/crystal923129/article/details/6739615
使用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();
- }