我正在構建一個Android應用程序,它有一個用於保存用戶配置文件信息的類User。當創建用戶時,它會保存在SharedPreferences文件中,以便我可以加載最後創建的用戶,然後下次啓動該應用程序。我還有一個Singleton類,它保存新創建的用戶的對象,以便其他類可以使用它。我這樣做是爲了避免每次更改Fragment並且需要用戶時都閱讀SharedPreferences文件。我的問題是:是否使用Singleton將整個應用程序的變量保存在內存中?它是爲此目的還是有另一種方法來保持面向對象編程原則?在Activity中創建變量而不是使用訪問器方法會更好嗎?Singleton是保持Android應用程序內存數據的最佳方式嗎?
2
A
回答
0
是的,這是更好的方法。最好在Singleton對象中保存數據(正如你提到的那樣),而不是每次都從共享首選項訪問。我們在應用程序中爲會話目的使用單身人士,這意味着只要應用程序正在運行變量數據將可以訪問。您可以在活動級別創建變量,但這將是非常糟糕的方法。簡而言之,你用於你目的的方法是最好的方法。
0
我會使用以下內容: 接口CurrentUser。 CurrentUser具有檢索和更新用戶的方法。用戶可以存儲在數據庫,偏好或混合。 我會在需要時使用Dagger注入CurrentUser。 CurrentUser實現本身應該是一個單例,因爲Dagger不保證singleton的特性。 如果您的CurrentUser具有RxJava流或LiveData等功能以保持觀察者處於最新狀態,則可獲得獎勵積分。
作爲Singleton的替代品,您可能希望使用保留的碎片來實現Fragment Holder模式,但在您的情況下,Singleton似乎更好。只要確保你使用的接口和注入不會影響可測試性,並保持組件分離。
相關問題
- 1. Android:保存應用程序中的數據的最佳方法Singleton類
- 2. 在Android中存儲應用程序數據的最佳方式是什麼?
- 3. 將數據保存在mvc應用程序緩存中的最佳方式
- 4. Java編程 - 爲應用程序保存/讀取數據的最佳方式
- 5. 爲android應用程序存儲數據的最佳方法?
- 6. 從桌面應用程序存儲數據的最佳方式?
- 7. iOS/iPhone應用程序是保存數據的最佳位置嗎?
- 8. 爲我的iOS應用程序存儲多個應用程序內首選項的最佳方式是plists嗎?
- 9. 在Android應用程序中存儲文本數據的最佳方式?
- 10. 保持Web應用程序配置的最佳方式是什麼?
- 11. 保護Flex-BlazeDS應用程序的最佳方式是什麼?
- 12. MVC是編寫asp.net應用程序的最佳方式嗎?
- 13. 保持數據庫版本的最佳方式是什麼?
- 14. 保持/緩存數據集以在桌面應用程序上重複使用的最佳方式
- 15. Windows 7 Phone應用程序存儲憑據的最佳方式
- 16. 在Android應用程序中使用typo3內容的最佳方式是什麼?
- 17. 應用程序的最佳方式
- 18. 將數據保存到文件的最佳方式是什麼?
- 19. 將用戶數據(電子郵件+密碼)保存到您的應用程序的最佳方式是什麼?
- 20. 在.Net應用程序中保存/加載大量數據的最佳方法?
- 21. 在Windows 8應用程序中本地保存數據的最佳方法
- 22. 在移動應用程序中保持SSL證書的最佳方式
- 23. google應用程序引擎中的remote_api是存儲數據的最佳方式嗎?
- 24. 在WPF應用程序中本地保存數據的最佳方式是什麼?
- 25. 將數據從android應用程序導入遠程數據庫的最佳方式是什麼?
- 26. 聊天應用程序 - 最佳方式
- 27. Android:從服務器獲取數據的最佳方式(Widget +應用程序)
- 28. 使用應用程序預加載數據的最佳方式是什麼?
- 29. MVP模式是每個winforms應用程序的最佳方式嗎?
- 30. 什麼是保存ArrayList內容的最佳方式?
從我的理解本質上來說,這些信息被保存在一個Singleton類中,但是這樣的代碼更清晰和更模塊化? – D3bian0s
是的,代碼更好。通過客戶端獲得單例的實例是不好的做法,但只要客戶端自己沒有得到它,單純的生命週期就沒有問題。 單身可能很難測試它們是否有狀態,所以考慮在每個測試中使用構造函數package-private並使用單例的新實例,並且您很好。 – charlag