使用sharedpreferences可以存儲(chǔ)什么數(shù)據(jù)類型?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),龍山企業(yè)網(wǎng)站建設(shè),龍山品牌網(wǎng)站建設(shè),網(wǎng)站定制,龍山網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,龍山網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
可保存的類型:
string,int,float,long,boolean
//獲取sharedPreferences對(duì)象 SharedPreferences sharedPreferences = getSharedPreferences("zjl", Context.MODE_PRIVATE); //獲取editor對(duì)象 SharedPreferences.Editor editor = sharedPreferences.edit();//獲取編輯器 //存儲(chǔ)鍵值對(duì) 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()第二個(gè)參數(shù)為缺省值,如果preference中不存在該key,將返回缺省值 String name = sharedPreferences.getString("name", ""); int age = sharedPreferences.getInt("age", 1);
方法一:fastJson/Gson/Jackson將對(duì)象轉(zhuǎn)換成字符串,然后再保存。
方法二:ObjectOutputStream將對(duì)象轉(zhuǎn)化成流,base64將流轉(zhuǎn)成字符串,然后再保存。
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對(duì)象 */ public class SharedPreferenceUtil { /** * 存放實(shí)體類以及任意類型 * * @param context 上下文對(duì)象 * @param key * @param obj */ public static void putBean(Context context, String key, Object obj) { if (obj instanceof Serializable) {// obj必須實(shí)現(xiàn)Serializable接口,否則會(huì)出問(wèn)題 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數(shù)據(jù),其實(shí)可以保存Object對(duì)象
Android開(kāi)發(fā)筆記——SharedPreferences 存儲(chǔ)實(shí)體類以及任意類型
Android數(shù)據(jù)持久化之SharedPreference
所有基礎(chǔ)類型(byte/short/int/long/float/double/boolean/char 等)
String,List,Map,CharSequence等類
其他AIDL接口類型
所有Parcelable的類
1、byte/short/int/long/float/double/boolean/char等八種基本類型或它們對(duì)應(yīng)的數(shù)組
2、String、charsequence或?qū)?yīng)的數(shù)組,也可以是對(duì)象()或?qū)ο髷?shù)組。
3、Bundle.putSerializable(Key,Object); //實(shí)現(xiàn)Serializable接口的對(duì)象
4、Bundle.putParcelable(Key, Object); //實(shí)現(xiàn)Parcelable接口的對(duì)象
intent傳遞類型(abcd)
A、Serializable B、charsequence C、Parcelable D、Bundle
1、八種基本數(shù)據(jù)類型 及其對(duì)應(yīng)數(shù)組
2、String/Charsequence 及其對(duì)應(yīng)數(shù)組
3、Parcelable 及其對(duì)應(yīng)數(shù)組 /Serializable
4、bundle/intent
關(guān)于使用sharedpreferences可以存儲(chǔ)什么數(shù)據(jù)類型問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。