2016-03-10 40 views
1

在我们想要读取config vars的代码中,无处不在创建一个新的SharedPreferences对象吗?每次读取配置变量时都创建一个新的SharedPreferences对象?

SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(this); 

我有几个方法和类这样的代码,每次调用一个方法相同的代码被一次又一次地执行以获得SharedPreferences对象只是一个实例。

我认为我可以将所有这些仅仅归为一个实例,将该SharedPreferences对象存储到某个类var/field中,然后使用存储在该var中的对象在其他所有位置(创建一次并使用很多次)。也许我可以将它存储在专门用于此目的的单独类的静态字段中,然后在每个其他类中使用它。

什么ü建议,为什么?

回答

0

如果您需要访问这些变量在活动则创建活动,当你采取照顾,然后将设置保存为变量。然后,如果您需要在该活动中的方法中使用它,那么您可以轻松访问它们。

如果一个单独的类需要这些值然后只传递那些作为参数。这将减少您必须“运行相同的代码”的次数。

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; 
    } 
} 
1

我个人不以任何我的应用程序使用我SharedPreferences一个静态实例。我总是这样做,因为你在做PreferenceManager.getDefaultSharedPreferences(context)并在那个特定的方法中使用。

如果你是在一个特定的方法,以您的首选项访问过于频繁,也许你应该重新考虑它是否是一个良好的使用与否。如果您经常从首页上获得的信息是经常需要的,那么为什么不将它保存在内存中,并在不存在时从首选项加载?我肯定会为此而努力。

只是为了好奇,如果你想看到一个getSharedPreferences方法在内部看this的例子。

相关问题