我有一個在過去採取靜態日期的活動內的函數函數,使用DateUtils.getRelativeDateTimeString
將其格式化爲相對字符串(因此它變得類似「3分鐘前」,並設置我想要這TextView
保持更新,只要活動保持打開。使一個簡單的定期文本更新無限期地繼續
我該如何做一個連續的任務,將連續運行(無限循環)或運行在很短的時間間隔 - 就像每一個第二,如何在沒有進入後臺服務的情況下完成這項工作?
我有一個在過去採取靜態日期的活動內的函數函數,使用DateUtils.getRelativeDateTimeString
將其格式化爲相對字符串(因此它變得類似「3分鐘前」,並設置我想要這TextView
保持更新,只要活動保持打開。使一個簡單的定期文本更新無限期地繼續
我該如何做一個連續的任務,將連續運行(無限循環)或運行在很短的時間間隔 - 就像每一個第二,如何在沒有進入後臺服務的情況下完成這項工作?
這裏使用的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()
只需在單獨的線程上運行它
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?
使用線程,請確保當應用程序被暫停或恢復您適當地暫停或恢復您的線索。此外,它是一個好主意,自己結束他們在活動週期爲處理任何數據着想結束時,你可能想
使用AsyncTask,並在'doInBackground'中進行轉換並將其發佈到'onProgressUpdate'。 – Wenhui