標籤:具體類 tool editor reference etl 操作 import nbsp author
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