安卓本地化之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;
        }
    }
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM