我正在創建一個ScheduledThreadPool
以定期運行一些方法調用。 因爲我想一切都保存到數據庫每10秒一個例子...... 所以我就:Android在哪裏創建ScheduledThreadPool,如果不關機會發生什麼?
public class Scheduler{
ScheduledExecutorService scheduledExecutorService =
Executors.newScheduledThreadPool(5);
public Scheduler(){
foo = Foo.getInstance();
saveValues();
}
private void saveValues(){
ScheduledFuture saveValues = scheduledExecutorService.scheduleAtFixedRate(
new Runnable(){
public void run() {
Log.e(TAG, "in save values");
foo.save();
}
}, 2000, 2000, TimeUnit.MILLISECONDS);
}
}
,但問題是它運行一次,永無。 我在一篇教程中看到,關閉Executer
是非常重要的,因爲它可能會永遠運行,否則我希望我不需要關心它的生命週期,除非創建它並關閉它。
Foo
是一個Api,它是一個單例。它被activity
調用並調用Scheduler
。我還想知道它是否應該擴展應用程序,但是還沒有發現它。
在我的應用程序中,我需要調用它,在調度程序類中可以嗎?調度程序是否需要成爲Runnable?我究竟在哪裏關閉了Executer?
在此先感謝
PS:如果你認爲一個執行者是不是做了正確的方式,讓我知道。我瀏覽了很多主題和頁面,並沒有找到完美的答案,所以Executer看起來很好。
嘗試用10秒超時遞歸。 'Thread.sleep(10000)'或類似的東西。沒有必要使用'scheduledExecutorService'。還要確保你不會在UI線程中啓動它。嘗試'class MyAsyncClass extends AsyncTask {}'then'new RetreivePicture()。execute();' –
Pierre
2014-09-28 00:14:39
我需要調度一些操作,所以只是一個簡單的線程並不是真的這樣做。回到主要問題:我在哪裏使用Executer? :D – Ginbak 2014-09-28 00:27:42
'foo.save()'是否會返回? – Fildor 2014-09-28 00:37:55