在我们想要读取配置变量的代码中到处创建一个新的SharedPreferences对象是否可以接受?
SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(this);
我在几个方法和类中都有这样的代码,并且每次调用一个方法时,一次又一次地执行相同的代码以获得另一个SharedPreferences对象的实例。
我想我可以将所有这些只减少到一个实例化,将SharedPreferences对象存储到某个类var / field中,然后在其他每个地方使用存储在该var中的对象(Create one并多次使用)。可能我可以将它存储在专用于此目的的单独类的静态字段中,然后在其他所有类中使用它。
你有什么建议以及为什么?
答案 0 :(得分:1)
我个人不会在我的任何应用程序中使用SharedPreferences
的静态实例。我总是像你PreferenceManager.getDefaultSharedPreferences(context)
那样得到它并使用那个特定的方法。
如果您使用特定方法过于频繁地访问您的首选项,也许您应该重新考虑它是否是一个好用途。如果您经常需要从prefs获得的那些信息,那么为什么不将它保存在内存中并从prefs加载,只是当它不存在时?我肯定会那样做。
只是为了好奇,如果你想看看getSharedPreferences
方法在内部查看this的示例。
答案 1 :(得分:0)
如果您需要访问活动中的那些变量,那么您在创建活动时将其处理,然后将值保存为变量。然后,如果您需要在该活动中的方法中使用它,那么您将可以轻松访问它们。
如果一个单独的类需要这些值,那么只需将它们作为参数传递。这将减少必须“运行相同代码”的次数。
答案 2 :(得分:0)
创建一个扩展Application
类的单例,并在其中实例化sharedPreferences
。并提供public static
访问权限。
像这样:
public class MyApplication extends Application {
private static SharedPreferences prefs;
@Override
public void onCreate() {
super.onCreate();
prefs = PreferenceManager.getDefaultSharedPreferences(this);
}
public static SharedPreferences getSharedPref(){
return prefs;
}
}