2010-07-13 185 views
1

我使用CountDownTimer的onTick(long l)函數來檢查一些條件,如果他們滿意,我調用一個活動的函數來執行一些與UI相關的任務。然而,我想知道是否有可能在活動被破壞並由於方向更改而重新創建時,要運行onTick(),並且有可能在我的活動中調用可能尚未創建的活動?活動生命週期相關問題

如果是這樣,可以更正這個問題的任何想法?

回答

0

使用Service可能是一個不錯的選擇。這些並不是像活動一樣創建和銷燬的。當您的活動消失時,服務將繼續運行(除非在特殊情況下)。因此,如果您希望跨Activity實例繼續您的計時器,請嘗試使用服務。

友好的警告:當設備內存不足時,服務比活動更容易被殺死(最好是移除用戶可以看到的東西,而不是用戶看不到的東西)。假設你希望這個定時器從一開始就工作,直到你明確地終止它,那麼最好是在服務被操作系統刪除的時候繼續復活服務。你通過使onStartCommand方法返回START_REDILIVER_INTENT常量來做到這一點。儘管這並不能保證該服務在整個時間間隔內保持活躍,但這確實意味着它最終會回來。如果您的應用程序不消耗太多內存,則不必擔心這一點。如果是這樣,那麼您需要在使用計時器時具有創造性。

0

另一個想法:handle the screen orientation change yourself,以防止您的應用程序被重置。這種方法有其消極後果的份額,在Android開發者網站上的聲明:

處理的配置改變自己可以使它更難以利用替代資源,因爲系統不會自動爲您應用這些。這種技術應該被認爲是最後的手段,不建議用於大多數應用。

根據您的應用程序,這可能是好的。無論哪種方式,對您的清單文件進行相對簡單的更改,所以您可以試試看看會發生什麼。