2011-10-13 37 views
1

我有一個啓動固定速率定時器的活動。如果我重新打開活動,如何檢查計時器是否正在運行?Android:獲取已啓動的定時器

timer = new Timer(); 
timer.scheduleAtFixedRate(new TimerTask() { 
    public void run() 
    { 
     startService(new Intent(getBaseContext(), GetClassInfoService.class)); 
    } 
}, 0, Integer.parseInt(updateTime)*60*1000); 
editor.putString("timerState", "on"); 

我試圖設置一個共享偏好,並在每一個實例的工作除了當應用程序完全關閉時,完全關閉計時器(如果用戶關閉力或重新啓動裝置)。共享偏好將保持「開啓」。只需在onDestroy中更改它將無法工作,因爲即使應用程序關閉(但計時器保持打開狀態),我也希望計時器繼續關閉。

有沒有更好的方法來檢查計時器?或者可能是一種方法來知道計時器關閉或重新啓動時何時關閉?

回答

1

startService方法調用的服務依賴於它包含的Activity。
爲什麼不使用bindService方法?

1

老實說,我需要更多的代碼才能給你一個明智的看法,但根據你給出的內容,我會說你想把你的計時器邏輯轉移到服務中。通過撥打startService,該服務將繼續運行,直到您致電stopService。然後你的計時器可以繼續無限期地在服務中運行,而不必擔心被停止(除非用戶強制關閉你的服務)。

根據您需要與GetClassInfoService.class進行通信的情況,您可以使用類似IntentService的郵箱,也可以使用更強大的服務綁定方法。兩者都有描述here.