加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 有没有办法在我的整个Android应用程序中使SharedPrefere

发布时间:2020-12-14 05:41:02 所属栏目:Java 来源:网络整理
导读:有没有办法在我的整个应用程序中使SharedPreferences全局化?现在我在代码中的很多地方都使用这些行来存储用户可以设置的一些首选项的简单的开/关设置.我只想尽可能地在全球呼叫一次: SharedPreferences settings = getSharedPreferences("prefs",0);Shared
有没有办法在我的整个应用程序中使SharedPreferences全局化?现在我在代码中的很多地方都使用这些行来存储用户可以设置的一些首选项的简单的开/关设置.我只想尽可能地在全球呼叫一次:
SharedPreferences settings = getSharedPreferences("prefs",0);
SharedPreferences.Editor editor = settings.edit();

任何关于如何能够在所有类中调用这些行的提示将是非常棒的:

editor.putString("examplesetting","off");
editor.commit();

String checkedSetting = settings.getString("examplesetting","");

解决方法

我知道,我知道,我会发炎,并投入地狱的余烬….

使用一个包围SharedPreference设置的单例类,如下所示:

public class PrefSingleton{
   private static PrefSingleton mInstance;
   private Context mContext;
   //
   private SharedPreferences mMyPreferences;

   private PrefSingleton(){ }

   public static PrefSingleton getInstance(){
       if (mInstance == null) mInstance = new PrefSingleton();
       return mInstance;
   }

   public void Initialize(Context ctxt){
       mContext = ctxt;
       //
       mMyPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
   }
}

并围绕您的示例在问题中表示的创建包装函数,例如,

PrefSingleton.getInstance().writePreference(“exampleSetting”,“off”);

并且实现可能是这样的:

// Within Singleton class

public void writePreference(String key,String value){
     Editor e = mMyPreference.edit();
     e.putString(key,value);
     e.commit();
}

从你的第一个活动,激活单身班,这样的方式,像这样:

PrefSingleton.getInstance().Initialize(getApplicationContext());

我冒险投票的原因是使用全局静态类可能是一个坏主意,违反了编程基础的实践.不过说过,除了这个挑剔之外,它将确保只有PrefSingleton类中唯一的对象可以存在并且可以访问,而不管代码是什么活动.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读