我正在创建一个静态的单例类,因为它需要从任何地方访问。此类需要经常写入共享首选项。要创建共享引用对象,我需要上下文。
我读到在静态类中存储对Context的引用是个坏主意,因为上下文不能进行垃圾回收,特别是如果它是活动的。
因此,我创建了方法,无论何处需要编写共享首选项,我都会传入上下文。这导致创建共享首选项对象,存储数据,然后删除对象。
这可以吗?为什么或为什么不呢?
谢谢
答案 0 :(得分:4)
你可以简单地
SharedPreferences pref = PreferenceManager.
getDefaultSharedPreferences(context.getApplicationContext());
因此,每当context
完成时,您都不会关心,因为您使用的是应用程序上下文
答案 1 :(得分:0)
public ClassSingle{
private static ClassSingle classSingle = null;
public ClassSingle(Context context) {
//default values of variable if any
}
synchronized public static ClassSingle getInstance(Context context) {
if (classSingle == null) {
String configJson = context.getSharedPreferences(ApplicationConstants.PREF_FILE_CONFIG, Context.MODE_PRIVATE)
.getString(ApplicationConstants.EXTRA_KEY, null);
try {
classSingle = new Gson().fromJson(configJson, ClassSingle.class);
} catch (JsonSyntaxException e) {
e.getStackTrace();
}
if (classSingle == null) {
classSingle = new ClassSingle(context);
}
}
return classSingle;
}
}
使用这种方式制作类singlton并在任何地方获取实例..如果不存在,它将创建新实例,否则它将返回现有实例。