温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用sharedpreferences可以存储什么数据类型

发布时间:2021-06-03 15:44:21 来源:亿速云 阅读:535 作者:Leah 栏目:编程语言

使用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

AIDL支持的数据类型

  1. 所有基础类型(byte/short/int/long/float/double/boolean/char 等)

  2. String,List,Map,CharSequence等类

  3. 其他AIDL接口类型

  4. 所有Parcelable的类

bundle可传递数据类型:

1、byte/short/int/long/float/double/boolean/char等八种基本类型或它们对应的数组

2、String、charsequence或对应的数组,也可以是对象()或对象数组。

3、Bundle.putSerializable(Key,Object); //实现Serializable接口的对象

4、Bundle.putParcelable(Key, Object); //实现Parcelable接口的对象

使用sharedpreferences可以存储什么数据类型

使用sharedpreferences可以存储什么数据类型

使用sharedpreferences可以存储什么数据类型

使用sharedpreferences可以存储什么数据类型

intent可传递数据类型:

intent传递类型(abcd)

A、Serializable    B、charsequence    C、Parcelable    D、Bundle

1、八种基本数据类型 及其对应数组

2、String/Charsequence 及其对应数组

3、Parcelable 及其对应数组 /Serializable

4、bundle/intent

使用sharedpreferences可以存储什么数据类型

使用sharedpreferences可以存储什么数据类型

使用sharedpreferences可以存储什么数据类型

关于使用sharedpreferences可以存储什么数据类型问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI