【发布时间】:2017-08-11 17:25:44
【问题描述】:
我想重构我的项目,它有很多带有硬编码字符串的不必要代码。所以我想创建单例 SharedPrefsManager,我将使用应用程序上下文。是否会在我的管理器类中发生静态 SharedPrefs 的内存泄漏原因。
public class SharedPrefsManager {
private static SharedPrefsManager sharePref = new SharedPrefsManager();
private static SharedPreferences sharedPreferences;
private SharedPrefsManager() {}
public static SharedPrefsManager getInstance(Context context) {
if (sharedPreferences == null) {
sharedPreferences = context.getSharedPreferences(context.getPackageName(), Activity.MODE_PRIVATE);
}
return sharePref;
}
}
【问题讨论】:
-
如果你所追求的东西也是
static,为什么你还需要一个类的实例。使SharedPreferences非静态。 -
只要您的应用程序处于活动状态并且不依赖于活动生命周期,应用程序上下文就会存在,因此在这种情况下不会发生内存泄漏
标签: android memory-leaks sharedpreferences