安卓本地化之SharedPreferences

Posted 秋夜雨巷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓本地化之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;
        }
    }
}

 

 

以上是关于安卓本地化之SharedPreferences的主要内容,如果未能解决你的问题,请参考以下文章

安卓开发之文件存储SharedPreferences

Kotlin安卓页面本地存储数据(方法和封装)

Android 安卓告别SharedPreFerences,你好MMKV

Android 安卓告别SharedPreFerences,你好MMKV

Android 安卓告别SharedPreFerences,你好MMKV

安卓SharedPreferences