我使用CountDownTimer的onTick(long l)
函數來檢查一些條件,如果他們滿意,我調用一個活動的函數來執行一些與UI相關的任務。然而,我想知道是否有可能在活動被破壞並由於方向更改而重新創建時,要運行onTick()
,並且有可能在我的活動中調用可能尚未創建的活動?活動生命週期相關問題
如果是這樣,可以更正這個問題的任何想法?
我使用CountDownTimer的onTick(long l)
函數來檢查一些條件,如果他們滿意,我調用一個活動的函數來執行一些與UI相關的任務。然而,我想知道是否有可能在活動被破壞並由於方向更改而重新創建時,要運行onTick()
,並且有可能在我的活動中調用可能尚未創建的活動?活動生命週期相關問題
如果是這樣,可以更正這個問題的任何想法?
我會用AlarmManager和BroadcastReceiver來處理重複的東西。
也瞭解Listening for and broadcasting global messages and setting alarms 其他一些教程約Android AlarmManager
但是這會給你最好的答案可能,剛剛看了一下alarmmanager tutorial
使用Service可能是一個不錯的選擇。這些並不是像活動一樣創建和銷燬的。當您的活動消失時,服務將繼續運行(除非在特殊情況下)。因此,如果您希望跨Activity實例繼續您的計時器,請嘗試使用服務。
友好的警告:當設備內存不足時,服務比活動更容易被殺死(最好是移除用戶可以看到的東西,而不是用戶看不到的東西)。假設你希望這個定時器從一開始就工作,直到你明確地終止它,那麼最好是在服務被操作系統刪除的時候繼續復活服務。你通過使onStartCommand方法返回START_REDILIVER_INTENT常量來做到這一點。儘管這並不能保證該服務在整個時間間隔內保持活躍,但這確實意味着它最終會回來。如果您的應用程序不消耗太多內存,則不必擔心這一點。如果是這樣,那麼您需要在使用計時器時具有創造性。
另一個想法:handle the screen orientation change yourself,以防止您的應用程序被重置。這種方法有其消極後果的份額,在Android開發者網站上的聲明:
處理的配置改變自己可以使它更難以利用替代資源,因爲系統不會自動爲您應用這些。這種技術應該被認爲是最後的手段,不建議用於大多數應用。
根據您的應用程序,這可能是好的。無論哪種方式,對您的清單文件進行相對簡單的更改,所以您可以試試看看會發生什麼。
您能否提供一些鏈接或詳細信息 – rantravee 2010-07-13 12:40:41