我嘗試使用SharedPreferences,但我不明白爲什麼我們需要上下文。爲什麼SharedPreferences使用上下文?
如果我用我的主要活動的上下文創建SharedPreferences,我可以用另一個上下文獲得某些東西嗎?
例如與intentService類
由於
我嘗試使用SharedPreferences,但我不明白爲什麼我們需要上下文。爲什麼SharedPreferences使用上下文?
如果我用我的主要活動的上下文創建SharedPreferences,我可以用另一個上下文獲得某些東西嗎?
例如與intentService類
由於
IntentService
一個是Context
一個子類(就像是Activity
,Application
,及其他許多Android類)。所以當然你可以從IntentService
創建一個SharedPreferences
。它會看到與應用程序中的任何Activity
或其他Context
相同的SharedPreferences
值。 (這就是爲什麼它被稱爲共享。)您只需確保在一個上下文中在首選項編輯器中對apply()
或commit()
所做的更改在其他位置可以看到更改。這全部覆蓋在the docs。
感謝您的幫助!隨着你的回答,我更瞭解上下文和SharedPreference。這非常有幫助! –
看着Android Source Code。你會了解這方面階級內部維護,以便快速訪問共享偏好的靜態HashMap中:
private static final HashMap<String, SharedPreferencesImpl> sSharedPrefs =
new HashMap<String, SharedPreferencesImpl>();
所以,你可以從任何類得到SharedPreferences像Intent Service
或Activity
等延伸Context
,它總是會返回相同的對象,如果給予相同的名稱。
注:IntentService
確實,如果你追溯鏈延長語境:
IntentService extends Service
Service extends ContextWrapper
ContextWrapper extends Context
是的,這是無感的問題,但無論如何。 正如您所知SharedPreference.It用於存儲專用原始數據。
這裏是私人數據條款。這意味着這些數據存儲在應用程序的存儲路徑中。這是data/data/yourpackageName/shared_prefs
。
所以要訪問您的應用程序的存儲,SharePreference
需要您的任何運行Activity
的活動上下文。
SharedPreferences被讀取並保存到磁盤。
因此,該類需要知道應用程序的位置 - 並且唯一的方法是通過上下文知道該應用程序的位置。
在標準Java中有全局(靜態)對象,因此您可以像System.getProperty(「user.home」)那樣訪問用戶的主目錄。該系統並未在Android中維護 - 在Android中,您需要使用上下文才能訪問應用程序的主目錄
請不要在此處詢問這種類型的無意義問題。在_Google_ –
上搜索我正在投票結束這個問題,因爲這是一個無意義的問題。 –
@DerGolem我和你在一起。 –