每次读取配置变量时都创建一个新的SharedPreferences对象?

时间:2016-03-10 20:01:46

标签: android sharedpreferences

在我们想要读取配置变量的代码中到处创建一个新的SharedPreferences对象是否可以接受?

SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(this);

我在几个方法和类中都有这样的代码,并且每次调用一个方法时,一次又一次地执行相同的代码以获得另一个SharedPreferences对象的实例。

我想我可以将所有这些只减少到一个实例化,将SharedPreferences对象存储到某个类var / field中,然后在其他每个地方使用存储在该var中的对象(Create one并多次使用)。可能我可以将它存储在专用于此目的的单独类的静态字段中,然后在其他所有类中使用它。

你有什么建议以及为什么?

3 个答案:

答案 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;
     }
}