[英]How to identify and restart the threads that have been killed after starting a list of threads using the java class?
[英]Android: have Singleton class that will never been killed
在我的Android應用程序中,我有一個Singleton類。 當應用程序任務處於活動狀態時,它就像是一種魅力。 但是在終止應用程序任務之后,Singleton類被銷毀,這很明顯。 我需要讓這堂課永遠活着。 可能嗎? 避免此類被Android系統殺死的最佳方法是什么?在這種情況下,我需要使用后台服務嗎?
為了試圖確保Singleton類始終保留在內存中以便后續調用應用程序而使用Service的設計是非常糟糕的。 這根本不是服務的目的。 參見: http : //www.androidguys.com/2009/09/09/diamonds-are-forever-services-are-not/ 。
如果要確保為下次創建應用程序准備好一堆數據,則應選擇一種適當的方法來保留該數據。 例如,這可以通過使用SharedPreferences或SQL或緩存等來實現,具體取決於您要保留的數據類型。 然后,設計所有Activity類,以正確處理所有Singleton數據均未處於初始化狀態時恢復它們的情況。
我個人維護着一個復雜的科學應用程序,該應用程序依賴於RAM中保存大量單例數據。 我在開發的早期階段遇到的一個重要問題是,可能發生以下情況:
Service
被銷毀和創建(可能要重復幾次)。 為了應對上述情況,我要做的關鍵是確保所有Activity都不會僅僅假設在Activity啟動時就存在完整的全局(Singleton)數據。 我的應用程序中依賴於全局Singleton數據的每個Activity首先檢查該數據,如果未初始化,則調用Application類中的方法以觸發該數據的重新生成(在我的情況下,這涉及從文件中檢索該數據。 SD卡)。
簡而言之,在Android中處理全局/單例數據需要一些注意和考慮。 您不能強迫系統無限期地避免殺死您的應用程序,從而殺死所有您的Singleton數據。 因此,我學到的關鍵知識是持久性和檢索數據,並設計Activity類以正確處理在創建Activity時未發現尚未初始化Singleton數據的情況。
是的,您需要使用后台服務。后台服務是與其他所有組件相比在被殺死方面具有最高優先級的組件,但是請確保或服務應連續運行。
嘗試使用moveTaskToBack() 。 這應該夠了吧。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.