2015-04-16 57 views
0

我期待下面的代码块写入“Hello!”每秒一次。但它写了两次。我究竟做错了什么?运行中重复两次()

handler = new Handler(); 
    final Runnable r = new Runnable() { 
     public void run() { 
      Log.d("message", "Hello!");    
      handler.postDelayed(this, 1000); 
     } 
    }; 

    handler.postDelayed(r, 1000); 
    runOnUiThread(r); 

回答

3

它会写两次,因为您在UI线程队列中发布了两次。一个与处理程序,另一个与可运行。

handler.postDelayed(r, 1000); 
runOnUiThread(r); 

因此根据您的要求摆脱一二。对我来说,它看起来像你只想要handler

1

做一个简单的实现,创建一个TimerTask

Timer timer = new Timer(); 
timer.schedule (new TimerTask() { 
      @Override 
      public void run() { 
       // Print your Hello here... 
      } 
     }, 0, 1000);