如何每秒自动刷新Android活动中显示的数据

如何每秒自动刷新Android活动中显示的数据,android,runnable,android-intentservice,android-timer,Android,Runnable,Android Intentservice,Android Timer,我需要每秒自动刷新活动中显示的数据,我使用了runnable、timer等。这些功能非常有效,但几秒钟后,UI速度很慢,有时没有响应。我读过IntentService,但我认为在IntentService中使用无限循环不是一个好主意。是否有我遗漏的东西,请帮忙。也许这能帮上忙: private class WaitTimer extends TimerTask { @Override public void run() { //every

我需要每秒自动刷新活动中显示的数据,我使用了runnable、timer等。这些功能非常有效,但几秒钟后,UI速度很慢,有时没有响应。我读过
IntentService
,但我认为在
IntentService
中使用无限循环不是一个好主意。是否有我遗漏的东西,请帮忙。

也许这能帮上忙:

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


我会这样做

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);
}

如果在屏幕上重新加载数据的过程需要一秒钟以上?它是CPU密集型的吗?如果不是,您应该能够轻松地使用处理程序发布延迟的runnable,而不影响UI性能。我检查发现,重新加载数据只需一秒钟,进程占用的cpu不超过5%,但UI有时没有响应。
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);
}