我有一個應用程序,我將信息數據存儲在sharedPreference中 我想創建一個靜態類,它將保存來自sharedPreference(get和set)的數據,因此我不必每次都調用sharedPreference(性能問題) 靜態助手類不具有對sharedPreference的引用,是否有任何方法可以在不傳遞調用活動作爲參數的情況下獲取它? 也許getParent()?或getContext()?sharedPreference from助手類
回答
我認爲你有2種方法來做到這一點:
你可以在你的所有靜態方法的參數傳遞一個
Context
。然後只需使用context.getSharedPreferences()
。創建一個靜態的
init
方法,將您的SharedPreferences
的數據記錄到您班級的靜態字段中。
對於我的角度來說,我更喜歡N°1,因爲在N°2你必須調用init
,每次修改它,你在SharedPreferences
考慮實施一個Singleton類用於此目的。我不確定sharedpreference是否存在性能問題。
用一個單獨的類,你可以存儲對象相比,共享偏好(串)。
添加新的數據你會以某種方式必須通過Context
到您的靜態類,最好是應用程序上下文。我建議你重寫Application
類(你會需要它的子類),並在靜態類中的上下文引用從那裏設置getApplicationContext()
的onCreate()
方法。這樣,您可以從任何其他應用程序組件(Activity
,Service
,...)訪問共享首選項訪問器,而無需每次都提供Context
。
您永遠不想保留對Activity的靜態引用。這將是創建一個可怕的內存泄漏的好方法。您可以使用context.getApplicationContext()創建一個到ApplicationContext的靜態引用; – 2012-09-12 00:26:54
......這正是我所說的。 – user634618 2012-09-12 09:41:14
另一種方式是寫自己的MyApplication extends Application
,在那裏你可以存儲任何你在整個應用程序的範圍要和定義任何你想要的「靜態」的方法。您可以通過(MyApplication)yourActivityInstance.getApplication()
訪問它。
這是有點晚了,但這裏有一個簡單的方法,我創建。
而不是每次創建自己的SharedPreferences幫助類每個項目你可以使用這個開源庫我創建並使生活更簡單。
Android-SharedPreferences-Helper
添加這種依賴,並開始:
dependencies {
...
...
compile(group: 'com.viralypatel.sharedpreferenceshelper', name: 'library', version: '1.1.0', ext: 'aar')
}
使用
檢查庫頁有關使用高級功能的詳細信息。
- 1. SharedPreference:如何創建sharedPreference類
- 2. HTML助手類
- 3. c#:IsNullableType助手類?
- 4. Android DB助手類
- 5. Swift助手類ViewController
- 6. PHP Form助手類
- 7. 類助手和XE2
- 8. 需要幫助解決sharedPreference probem
- 9. 使用sharedpreference幫助登錄活動
- 10. Kohana的助手類3.3
- 11. 一類在Rails助手
- 12. CSS助手類的使用
- 13. 助手或類的方法
- 14. Ramda類型檢查助手
- 15. 製作字體助手類
- 16. sql助手類的混淆
- 17. Rails中的類助手
- 18. 助手類沒有從View
- 19. Mockito的嘲笑助手類
- 20. 活動目錄助手類
- 21. Vb.net中介助手類
- 22. Xamarin表格:MasterPage助手類
- 23. C++ Builder中的類助手
- 24. .Net類助手方法
- 25. 斷言助手類忽略
- 26. 動作助手,類似evt.target
- 27. Android,SharedPreference在手機重啓時丟失
- 28. 助手內呼叫助手
- 29. 如何在自定義助手類中使用Padrino助手
- 30. 標籤助手與助手類有什麼不同?
我看到了由getter/setter方法直接訪問共享偏好沒有任何問題了。 – ernazm 2011-03-21 11:43:47
SharedPreferences實際上是一個Singleton類,當您調用getSharedPreferences時,您實際上只會獲得一個實例,並且在獲得共享首選項的調用數量方面不存在性能損失 – Coderji 2016-04-28 21:42:34