是的,你可以把它公共靜態:
public static void setSharedPrefs(Context context, String key, String value) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = settings.edit();
editor.putString(key, value).commit();
}
在那裏你可以抓住的活動已經死亡後的背景下某些情況下小心,那是不好的。
您的描述
更可能的情況可能是創建這樣一個類:
public class MyPrefs {
SharedPreferences settings;
SharedPreferences.Editor editor;
public MyPrefs(Context context){
settings = PreferenceManager.getDefaultSharedPreferences(context);
editor = settings.edit();
}
public void saveName(String name){
editor.putString("name", name).commit();
}
}
你會延遲初始化這個類在你的類,它擴展應用,並有一個getter在那裏撿回來,用的東西像:
MyPrefs prefs = ((MyAppication) getContext().getApplicationContext()).getMyPrefs();
,並使用它,像這樣:
prefs.saveName("blundell");
EDIT
懶惰初始化的實施例:
private MyPrefs prefs;
public MyPrefs getMyPrefs(){
if(prefs == null){
prefs = new MyPrefs(this);
}
return prefs;
}
N.B這是一個擴展因此Application
this
是指應用程序的上下文,並且將活應用程序的持續時間的類內延遲初始化。如果你在哪裏使用Activity上下文,你不想使用懶惰初始化。 (因此使用應用程序上下文!)
這似乎很合適。但是,對於懶惰的init,你是什麼意思?我想我必須通過以下方式初始化:'MyPrefs prefs = new MyPrefs(context); ... prefs.saveName(..);' – membersound
懶惰的init意味着你不會初始化這個實例直到你真的需要它。 – QuantumMechanic
@membersound已更新以顯示延遲初始化 – Blundell