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; } } }
