2017-01-30 50 views
0

我有一個Countdown timer服務,如果不停止,它將觸發一系列事件。 我開始一個Activity帶有一個顯示剩餘倒計時的文本字段,如果這個對話框沒有被解除/關閉,那麼定時器將執行它的onFinish()指令。如何停止服務中的Countdowntimer來自活動

我可以使用倒數計時器的onTick()方法中的廣播來更新Activity

對我來說,問題是如果用戶清除警告/警報對話框,我該如何向服務發送消息給cancel()定時器。

邊問:onTick()方法回調定期間隔他們是怎麼考慮定期間隔我不想成爲廣播發送到各MS活動的更新解僱。那不就是過度播出嗎?當我只需要每秒鐘更新倒計時。

回答

0

我不知道這是否是最好的解決方案,它取決於您多久使用一次,但您可以使用共享首選項 - 將其寫入應用程序並在服務中檢查。 關於側面問題 - 你正在設置實例化你的計時器的時間間隔,因爲這是構造函數CountDownTimer(long millisInFuture, long countDownInterval)

+0

不知道它是否是最好的解決方案,但它確實有效,而且我現在正在使用它。另一種方法是通過startService()調用服務,在onStartCommand()中使用指定更新的Intent。由於該服務應該繼續運行,如果沒有,您可以處理該服務已關閉的事實。 – Charon

+0

我可能不得不問另一個問題,因爲我無法弄清如果'onStartCommand()'仍在處理中會發生什麼。然後再次調用'startService()'進來。它排隊嗎?或者多個'onStartCommand()'調用並行運行? – Charon

+0

我不知道會發生什麼 - 但我相信你會在這裏找到你的答案:https://developer.android.com/reference/android/app/Service.html,在'服務生命週期'下。如果您仍然有疑問,這似乎是正確的日誌記錄和時間戳比較可以解決的問題。 – yakobom