zoukankan      html  css  js  c++  java
  • 安卓本地化之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;
            }
        }
    }

     

  • 相关阅读:
    hdu 5045 Contest
    hdu 4068 SanguoSHA
    TSP 旅行商问题(状态压缩dp)
    haoi2015 树上操作
    noi 2015 软件包管理器(树链剖分)
    zjoi2008 树链剖分
    读入优化
    动态规划类型总结
    有关Rujia Liu 动态规划的·一些总结
    输入优化
  • 原文地址:https://www.cnblogs.com/aeolian/p/9469636.html
Copyright © 2011-2022 走看看