2012-10-07 47 views
1

我有一個在過去採取靜態日期的活動內的函數函數,使用DateUtils.getRelativeDateTimeString將其格式化爲相對字符串(因此它變得類似「3分鐘前」,並設置我想要這TextView保持更新,只要活動保持打開。使一個簡單的定期文本更新無限期地繼續

我該如何做一個連續的任務,將連續運行(無限循環)或運行在很短的時間間隔 - 就像每一個第二,如何在沒有進入後臺服務的情況下完成這項工作?

+0

使用AsyncTask,並在'doInBackground'中進行轉換並將其發佈到'onProgressUpdate'。 – Wenhui

回答

1

這裏使用的AsyncTask

private class BackgroundCoversionTask extends AsyncTask< String, String, Void >{ 

    @Override 
    protected Void doInBackground(String... params) { 

     while(!isCancelled()){ 
      try { 
       Thread.sleep(1000); 
      } catch (InterruptedException e) { 
       break; 
      } 

      //DateUtils.getRelativeDateTimeString(MainActivity.this, time, minResolution, transitionResolution, flags) 
      // Do something right here 
      publishProgress(Long.toString(System.currentTimeMillis())); 

     } 

     return null; 
    } 

    @Override 
    protected void onProgressUpdate(String... values) { 
     super.onProgressUpdate(values); 

     mTextView.setText(values[0]); 
    } 

} 

然後,如果你想取消的例子任務,請撥打cancel()

0

只需在單獨的線程上運行它

Thread thread = new Thread() 
{ 
    @Override 
    public void run() { 
     try { 
      while(true) { 
       sleep(1000); 
       //Do your date update here 
      } 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
}; 

thread.start(); 

參見:How to run a Runnable thread in Android?

使用線程,請確保當應用程序被暫停或恢復您適當地暫停或恢復您的線索。此外,它是一個好主意,自己結束他們在活動週期爲處理任何數據着想結束時,你可能想