Android Timer 更好方法

Android的Timer 一般如下面所写

Java代码
  1. Timertimer=newTimer();
  2. TimerTasktask=newTimerTask(){
  3. publicvoidrun(){
  4. Messagemessage=newMessage();
  5. message.what=1;
  6. handler.sendMessage(message);
  7. }
  8. };

Java代码
  1. finalHandlerhandler=newHandler(){
  2. publicvoidhandleMessage(Messagemsg){
  3. switch(msg.what){
  4. case1:
  5. Log.e("Timer","Timer");
  6. update();
  7. break;
  8. }
  9. super.handleMessage(msg);
  10. }
  11. };

Java代码
  1. protectedvoidonDestroy(){
  2. if(timer!=null){
  3. timer.cancel();
  4. timer=null;
  5. }
  6. super.onDestroy();
  7. }

最重要一点是timer.schedule(task, 1000, 5000);如果设置为timer.schedule(task, 5000)是不会工作的。

Java代码
  1. protectedvoidonCreate(BundlesavedInstanceState){
  2. super.onCreate(savedInstanceState);
  3. this.setContentView(R.layout.main);
  4. timer.schedule(task,1000,5000);
  5. }

但更好的方法是通过下面的代码

Java代码
  1. privateHandlerhandler=newHandler();
  2. privateRunnablerunnable=newRunnable(){
  3. publicvoidrun(){
  4. update();
  5. handler.postDelayed(this,1000);
  6. }
  7. };

开始Timer

Java代码
  1. handler.postDelayed(runnable,1000);

停止Timer

Java代码
  1. handler.removeCallbacks(runnable);

你可能感兴趣的:(android)