不,它不會得到任何內存泄漏如果您使用應用程序上下文。創建SharedPrefsManager
作爲單例,並從Application
類中初始化。這樣就可以從任意位置訪問
創建這樣的,
public class SharedPrefsManager {
private static SharedPrefsManager mInstance= null;
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor prefsEditor;
private SharedPrefsManager(Context context) {
sharedPreferences = context.getSharedPreferences(context.getPackageName(), Activity.MODE_PRIVATE);
prefsEditor = sharedPreferences.edit();
}
public static void init(Context context) {
mInstance = new SharedPrefsManager(context);
}
public static SharedPrefsManager getInstance() {
if (mInstance == null) {
throw new RuntimeException(
"Must run init(Application application) before an instance can be obtained");
}
return mInstance;
}
/**
* To get the Stored string value in Preference.
*
* @param key
* @param defaultvalue
* @return stored string value.
*/
public String getStringValue(final String key, final String defaultvalue) {
return sharedPreferences.getString(key, defaultvalue);
}
/**
* To store the string value in prefernce.
*
* @param key
* @param value
*/
public void setStringValue(final String key, final String value) {
prefsEditor.putString(key, value);
prefsEditor.commit();
}
}
從應用類可以初始化這個樣子,
public class StackApp extends Application {
@Override
public void onCreate() {
super.onCreate();
SharedPrefsManager.init(this);
}
}
所以,你可以從任何其他類使用沒有上下文。 例如:你可以使用這樣的,
SharedPrefsManager.getInstance().setStringValue("key", "value");
爲什麼你如果事情需要的類的實例你之後是靜態的。使'SharedPreferences'非靜態。 – Vucko
只要應用程序處於活動狀態並且不依賴於活動生命週期,應用程序上下文就會存活,因此在此情況下無內存泄漏 –