2014-04-22 43 views
1

我想每秒更新一次通知的文本。我寫了這段代碼每秒更新通知文本

new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     // TODO Auto-generated method stub 
     builder.setSmallIcon(R.drawable.ic_launcher); 
     builder.setContentTitle("Text"); 
      builder.setContentText("value updated every 1 second"); 
     } 

    }   
}, 1*1000); 

但是這個值不是每1秒更新一次,而只是一次。爲什麼?我怎樣才能做到這一點?

+0

檢查這個計算器等【答案】(http://stackoverflow.com/questions/9850594/why-handler-timer-only-run-once )。 – calimbak

回答

0

他的代碼啓動一個線程,每輪睡眠1000毫秒。

Thread t = new Thread() { 

    @Override 
    public void run() { 
    try { 
     while (!isInterrupted()) { 
     Thread.sleep(1000); 
     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
      // update TextView here! 
      } 
     }); 
     } 
    } catch (InterruptedException e) { 
    } 
    } 
}; 

t.start(); 
0

嘗試使用定時器處理程序ll調用一次。

Timer timer = new Timer(); 
     TimerTask task = new TimerTask() { 

      @Override 
      public void run() { 
       updateUI(); 
      } 
     }; 
     timer.scheduleAtFixedRate(task, 0,1000); 

把你的處理程序,以獨立的方法

public void updateUI(){ 
     new Handler().postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       builder.setSmallIcon(R.drawable.ic_launcher); 
       builder.setContentTitle("Text"); 
        builder.setContentText("value updated every 1 second"); 

      } 
     }, 1000); 
    }