• 安卓本地化之SharedPreferences


    SharedPreferences的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息,用Sqlite数据库来存放并不划算,因为数据库连接跟操作等耗时大大影响了程序的效率。其存储位置在/data/data/<包名>/shared_prefs目录下。

    存储数据信息

    1)打开名为configuration的配置文件,如果存在则打开它,否则创建新的名为configuration的配置文件

    SharedPreferences sharedPreferences = context.getSharedPreferences("FILE_NAME", 0);

    2)让sharedPreferences处于编辑状态

    SharedPreferences.Editor editor = sharedPreferences.edit();

    3)存放数据

    editor.putString("key","value");

    4)完成提交

    editor.commit();

    读取数据信息

    1)打开名为configuration的配置文件

    SharedPreferences sharedPreferences = getSharedPreferences("FILE_NAME", 0);

    2)获取数据

    String name = sharedPreferences.getString("key","默认值");

    以上就是Android中SharedPreferences的使用方法,其中创建的配置文件存放位置可以在Eclipse中查看:DDMS --- File Explorer --- data/data/<package name>/shared_prefs/configuration.xml

    封装成Util类

    package com.autumn.tools;
    
    
    import android.content.Context;
    import android.content.SharedPreferences;
    import android.util.Log;
    
    import com.autumn.bookandroid.MyApplication;
    import com.autumn.pojo.Users;
    
    /**
     * SharedPreferences的一个工具类,调用setParam就能保存String, Integer, Boolean, Float, Long类型的参数
     * 同样调用getParam就能获取到保存在手机里面的数据
     * @author xiaanming
     *
     */
    public class SharedPreferencesUtils {
        /**
         * 保存在手机里面的文件名
         */
        private static final String FILE_NAME = "share_date";
    
        /**
         * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法
         * @param context
         * @param key
         * @param object
         */
        public static void setParam(Context context , String key, Object object){
    
            String type = object.getClass().getSimpleName();
            SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sp.edit();
    
            if("String".equals(type)){
                editor.putString(key, (String)object);
            }
            else if("Integer".equals(type)){
                editor.putInt(key, (Integer)object);
            }
            else if("Boolean".equals(type)){
                editor.putBoolean(key, (Boolean)object);
            }
            else if("Float".equals(type)){
                editor.putFloat(key, (Float)object);
            }
            else if("Long".equals(type)){
                editor.putLong(key, (Long)object);
            }
            editor.commit();
        }
    
    
        /**
         * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值
         * @param context
         * @param key
         * @param defaultObject
         * @return
         */
        public static Object getParam(Context context , String key, Object defaultObject){
            String type = defaultObject.getClass().getSimpleName();
            SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
            if("String".equals(type)){
                return sp.getString(key, (String)defaultObject);
            }
            else if("Integer".equals(type)){
                return sp.getInt(key, (Integer)defaultObject);
            }
            else if("Boolean".equals(type)){
                return sp.getBoolean(key, (Boolean)defaultObject);
            }
            else if("Float".equals(type)){
                return sp.getFloat(key, (Float)defaultObject);
            }
            else if("Long".equals(type)){
                return sp.getLong(key, (Long)defaultObject);
            }
            return null;
        }
    
        /**
         * 删除某个key对应的数据
         * */
        public static void remove(Context context ,String key){
            SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sp.edit();
            editor.remove(key);
            editor.commit();
        }
    
        /**
         * 删除全部数据
         * */
        public static void clear(Context context){
            SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sp.edit();
            editor.clear();
            editor.commit();
        }
    
    
        /*********************************本项目使用*********************************/
        /**
        * @Description: 获取登录全局用户信息
        * @Param:
        * @return:
        * @Author: qiuyu
        * @Date: 2018/8/13
        */
        public static Users getUserInfo(){
            //获取登录信息
            String userInfo = SharedPreferencesUtils.getParam(MyApplication.getContextObject(),"user","").toString();
            if (userInfo!=null&&!userInfo.trim().isEmpty()){
                JsonUtil<Users> jsonUtil1 = new JsonUtil<Users>();
                Users user = jsonUtil1.jsonToObject(userInfo,Users.class);
                Log.i("读取个人信息成功",user.toString());
                return user;
            }else {
                return null;
            }
        }
    }

     

  • 相关阅读:
    Silverlight中使用MVVM(2)-(提高)
    Silverlight中使用MVVM(1)--基础
    数据库设计 Step by Step (2)——数据库生命周期
    数据库设计 Step by Step (1)——扬帆启航
    心火肝火胃火肺火的症状区别及治疗方法
    ESP8266 wifi 模块配置,Wechat+APP控制实现
    PCB名詞解釋:通孔、盲孔、埋孔(转载)
    123
    电子称DIY(贴应变片+写代码)
    STM32常见问题
  • 原文地址:https://www.cnblogs.com/aeolian/p/9469636.html
Copyright © 2020-2023  润新知