美文网首页
SharedPreferences的使用与封装

SharedPreferences的使用与封装

作者: 大马猴2333 | 来源:发表于2018-08-13 13:54 被阅读0次

    SharedPreferences的介绍
    SharedPreferences:中文翻译为共享首选项,一个轻量级的存储类,能够保存和检索原始数据类型的永久性键值对,可以保存任何原始数据:布尔值、浮点值、整型值、长整型和字符串,特别适合用于保存软件配置参数。(是用xml文件存放数据,文件存放在/data/data//shared_prefs目录下)

    SharedPreferences的使用
    1,在Activity类中可以直接使用getSharedPreferences的方法获取SharedPreferences的对象

    SharedPreferences getSharedPreferences(String name, int mode)
    

    参数
    name:命名
    mode:模式
    其中包括:

    MODE_PRIVATE,//默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中,可以使用Activity.MODE_APPEND  
    MODE_WORLD_READABLE,//表示当前文件可以被其他应用读取,  
    MODE_WORLD_WRITEABLE,//表示当前文件可以被其他应用写入;  
                                        //如果希望文件被其他应用读和写,可以传入:MODE_WORLD_READABLE+Activity.MODE_WORLD_WRITEABLE  
    MODE_APPEND//该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件  
    

    若不在Activity类中可以使用

    context.getSharedPreferences(String name, int mode)
    

    2,使用SharedPreferences接口的edit获得SharedPreferences.Editor对象。

    SharedPreferences settings = getSharedPreferences(PREFS_NAME, Activity.MODE_PRIVATE);
    SharedPreferences.Editor editor = settings.edit();
    

    3,通过SharedPreferences.Editor接口的putXxx方法保存key-value对。其中Xxx表示不同的数据类型。例如:字符串类型的value需要用putString方法。

    editor.putString("userId","2333");
    

    4,通过SharedPreferences.Editor接口的commit方法保存key-value对。commit方法相当于数据库事务中的提交(commit)操作。

    editor.commit();
    

    5,通过SharedPreferences对象的getXXX方法获取数据。例如:获取字符串类型的value需要用getString方法。(参数1:对应获取的key,参数2:当读取不到指定的数据时,使用的默认值defValue)

    String userId = settings.getString("userId","defValue");
    

    6,清除数据

    //清除单个数据
    editor.remove("userId").commit();
    //清除所有数据
    editor.clear().commit();
    

    SharedPreferences的封装
    SharedPreferences在日常开发中经常使用到,我们需要简单封装下在任何地方使用很方便

    封装:PrefManager

    package com.ldl.spdemo;
    
    import android.content.SharedPreferences;
    
    /**
     * Created by Administrator on 2018/8/13 0013.
     */
    
    public class PrefManager {
    
        private static final String FILENAME = "_filename_social_";
    
        private volatile static PrefManager instance = null;
    
        //采用单利模式
        public static PrefManager instance() {
            if (instance == null) {
                synchronized (PrefManager.class) {
                    if (instance == null) {
                        instance = new PrefManager();
                        instance.init();
                    }
                }
            }
            return instance;
        }
    
        private SharedPreferences sp = null;
    
        // 初始化 App.getContext():全局Context也就是Application
        private void init() {
            sp = App.getContext().getSharedPreferences(FILENAME, 0);
        }
    
        private static final String KEY_USER_ID                     = "user_id";
        private static final String KEY_USER_TOKEN                  = "user_token";
    
    
        /**
         * 获取上次登录成功的用户SkyId
         *
         * @return
         */
        public String getUserId() {
            return sp.getString(KEY_USER_ID, "");
        }
    
        /**
         * 设置最新的登录成功skyId
         *
         * @param skyId
         */
        public void setUserId(String skyId) {
            sp.edit().putString(KEY_USER_ID, skyId).commit();
        }
    
        /**
         * 获取登录成功的用户token
         *
         * @return
         */
        public String getToken() {
            return sp.getString(KEY_USER_TOKEN, "");
        }
    
        /**
         * 设置最新的登录成功token
         *
         * @param token
         */
        public void setToken(String token) {
            sp.edit().putString(KEY_USER_TOKEN, token).commit();
        }
    
        /**
         * 清空所有设置
         */
        public void clear() {
            sp.edit().clear().commit();
        }
    
        /**
         * 清空单个数据
         * @param key
         */
        public void remove(String key){
            sp.edit().remove(key).commit();
        }
    
    }
    
    
    

    使用

    package com.ldl.spdemo;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //设置数据
            PrefManager.instance().setUserId("123456789");
            PrefManager.instance().setToken("987654321");
    
            //获取数据
            PrefManager.instance().getUserId();
            PrefManager.instance().getToken();
    
        }
    
    }
    
    
    大马猴.jpg

    相关文章

      网友评论

          本文标题:SharedPreferences的使用与封装

          本文链接:https://www.haomeiwen.com/subject/zubybftx.html