2016-08-23 47 views
0

我需要每秒自動刷新顯示在我的活動中的數據,我已經使用了runnable,timer等。這些工作完美,但幾秒後界面很慢,有時不響應。我已閱讀IntentService,但我認爲在IntentService中使用無限循環並不是一個好主意。有什麼我失蹤,請幫助。如何自動刷新顯示在我的Android活動中的數據每秒

+0

如果在屏幕上重新加載數據的過程花費超過一秒鐘?它是CPU密集型的嗎?如果不是,您應該可以輕鬆地使用處理程序來發布延遲的可運行內容,而不會影響UI性能。 –

+0

我檢查並發現,重新加載數據只需一秒鐘,並且進程沒有超過5%的CPU,但ui有時並沒有響應。 –

回答

0

也許這可以幫助:

private class WaitTimer extends TimerTask { 
     @Override 
     public void run() { 
      //every 5 seconds 
      if(millis % 5 == 0) { 
       //Do your magic here 
      } 
      millis+=1 
     } 
} 

然後在的onCreate()

millis = 0; 
timer = new Timer(); 
timer.schedule(new WaitTimer(), 0, 1000); 
0

我會做這樣的事情。

private Handler mRepeatHandler; 
private Runnable mRepeatRunnable; 
private final static int UPDATE_INTERVAL = 5000; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    mRepeatHandler = new Handler(); 
    mRepeatRunnable = new Runnable() { 
      @Override 
      public void run() { 
       //Do something awesome 

       mRepeatHandler.postDelayed(mRepeatRunnable, UPDATE_INTERVAL); 
      }; 

    mRepeatHandler.postDelayed(mRepeatRunnable, UPDATE_INTERVAL); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 

    mRepeatHandler.removeCallbacks(mRepeatRunnable); 
}