您好,登錄后才能下訂單哦!
使用sharedpreferences可以存儲什么數據類型?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
可保存的類型:
string,int,float,long,boolean
//獲取sharedPreferences對象 SharedPreferences sharedPreferences = getSharedPreferences("zjl", Context.MODE_PRIVATE); //獲取editor對象 SharedPreferences.Editor editor = sharedPreferences.edit();//獲取編輯器 //存儲鍵值對 editor.putString("name", "周杰倫"); editor.putInt("age", 24); editor.putBoolean("isMarried", false); editor.putLong("height", 175L); editor.putFloat("weight", 60f); editor.putStringSet("where", set); //提交 editor.commit();//提交修改 SharedPreferences sharedPreferences = getSharedPreferences("zjl", Context.MODE_PRIVATE); //getString()第二個參數為缺省值,如果preference中不存在該key,將返回缺省值 String name = sharedPreferences.getString("name", ""); int age = sharedPreferences.getInt("age", 1);
方法一:fastJson/Gson/Jackson將對象轉換成字符串,然后再保存。
方法二:ObjectOutputStream將對象轉化成流,base64將流轉成字符串,然后再保存。
package com.example.draggridview; /** * Created by Administrator on 2017/6/19. */ import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.util.Base64; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; /** * SharedPreferences工具類,可以保存object對象 */ public class SharedPreferenceUtil { /** * 存放實體類以及任意類型 * * @param context 上下文對象 * @param key * @param obj */ public static void putBean(Context context, String key, Object obj) { if (obj instanceof Serializable) {// obj必須實現Serializable接口,否則會出問題 try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(obj); String string64 = new String(Base64.encode(baos.toByteArray(), 0)); SharedPreferences.Editor editor = getSharedPreferences(context).edit(); editor.putString(key, string64).commit(); } catch (IOException e) { e.printStackTrace(); } } else { throw new IllegalArgumentException("the obj must implement Serializble"); } } public static Object getBean(Context context, String key) { Object obj = null; try { String base64 = getSharedPreferences(context).getString(key, ""); if (base64.equals("")) { return null; } byte[] base64Bytes = Base64.decode(base64.getBytes(), 1); ByteArrayInputStream bais = new ByteArrayInputStream(base64Bytes); ObjectInputStream ois = new ObjectInputStream(bais); obj = ois.readObject(); } catch (Exception e) { e.printStackTrace(); } return obj; } }
使用SharedPreference保存list數據,其實可以保存Object對象
Android開發筆記——SharedPreferences 存儲實體類以及任意類型
Android數據持久化之SharedPreference
所有基礎類型(byte/short/int/long/float/double/boolean/char 等)
String,List,Map,CharSequence等類
其他AIDL接口類型
所有Parcelable的類
1、byte/short/int/long/float/double/boolean/char等八種基本類型或它們對應的數組
2、String、charsequence或對應的數組,也可以是對象()或對象數組。
3、Bundle.putSerializable(Key,Object); //實現Serializable接口的對象
4、Bundle.putParcelable(Key, Object); //實現Parcelable接口的對象
intent傳遞類型(abcd)
A、Serializable B、charsequence C、Parcelable D、Bundle
1、八種基本數據類型 及其對應數組
2、String/Charsequence 及其對應數組
3、Parcelable 及其對應數組 /Serializable
4、bundle/intent
關于使用sharedpreferences可以存儲什么數據類型問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。