2016-08-23 10 views
0

アクティビティに表示されるデータを毎秒自動更新する必要があります。実行可能、タイマーなどを使用しました。これらは完全に動作しますが、数秒後にUIが遅くなります。応答しないことがあります。私はIntentServiceについて読んだことがありますが、IntentServiceで無限ループを使うのは良い考えではないと思います。私が行方不明のものがありますか、助けてください。毎秒Androidアクティビティに表示されるデータを自動更新する方法

+0

1秒以上の時間をかけて画面にデータを読み込むプロセスがある場合は、 CPU集中型ですか?そうでなければ、ハンドラを使用して遅延実行可能ファイルを簡単にポストでき、UIのパフォーマンスには影響しません。 –

+0

私はデータをリロードするのにちょうど1秒かかり、プロセスが5%以上のCPUを消費していないことを確認しましたが、uiは応答しません。 –

答えて

0

多分これは役立つかもしれない:私はこのような何かをしたい

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

のonCreateで、その後

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

とを()。

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); 
} 
関連する問題