>  기사  >  Java  >  sharedpreference는 어떤 데이터 유형을 저장할 수 있나요?

sharedpreference는 어떤 데이터 유형을 저장할 수 있나요?

醉折花枝作酒筹
醉折花枝作酒筹원래의
2021-06-03 14:51:485578검색

SharedPreferences는 간단한 유형의 데이터만 저장할 수 있으며 string, int, float, long 및 boolean 데이터 유형만 저장할 수 있습니다. 클래스나 이미지와 같은 더 복잡한 데이터 유형에 액세스해야 하는 경우 데이터를 인코딩해야 합니다.

sharedpreference는 어떤 데이터 유형을 저장할 수 있나요?

이 튜토리얼의 운영 환경: Windows 7 시스템, Java 10 버전, Dell G3 컴퓨터.

일상 개발에서 데이터를 저장해야 하는 경우가 많습니다. Android에서 일반적으로 사용되는 저장 방법에는 SQLite, sharedPreferences 등이 있습니다. 물론 전자는 더 많은 데이터를 저장하는 데 적합하지만 후자는 그런 경향이 있습니다. 사용자 기본 설정을 저장합니다. 특정 확인란의 선택 상태, 사용자 로그인 상태, 구성 정보, 비밀번호 기억 기능 구현 등과 같은 설정은 모두 키-값 쌍의 형태로 파일에서 읽혀집니다.

하지만 데이터가 하나 저장될 때마다 키를 제공해야 하는 것이지요. 여러 개의 데이터를 저장하려면 키를 여러 개 작성해야 하는 것 아닌가요? 예를 들어 사용자 닉네임, 개인 서명, 로그인 시간 등 사용자의 로그인 정보를 저장하고 싶습니다. 니마, 데이터 하나만 쓰면 루오 게임을 할 수 있습니다. 그렇다면 사용자 정보를 캡슐화하여 하나의 키로 저장하는 것은 어떨까요? 대답은 '예'입니다~
Java 클래스 라이브러리에서 제공되는 바이트 입력 및 출력 스트림을 사용하면 모든 유형을 문자열로 가역적으로 변환할 수 있으며 이를 Share에 저장할 수 있습니다~

SharedPreferences는 간단한 유형의 데이터만 저장할 수 있습니다 , 예를 들어 네 가지 기본 유형(int, float, long, boolean) + 문자열. 클래스나 이미지 등 더 복잡한 데이터 유형에 액세스해야 하는 경우 데이터를 인코딩하고 일반적으로 Base64 인코딩으로 변환한 다음 변환된 데이터를 문자열 형식으로 XML 파일에 저장해야 합니다.

sharedpreference는 어떤 데이터 유형을 저장할 수 있나요?

사용하기 간편함:

저장 가능한 유형:

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

저장 개체:

방법 1: fastJson/Gson/Jackson이 개체를 문자열로 변환한 다음 다시 저장하세요.

방법 2: 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를 사용하여 목록 데이터를 저장할 수 있습니다. 실제로 객체 개체를 저장할 수 있습니다.

Android 개발 노트 - SharedPreferences는 엔터티 클래스와 모든 유형을 저장합니다.

Android 데이터 지속성을 위한 SharedPreference

AIDL에서 지원하는 데이터 유형

  1. 모든 기본 유형(byte/short/int/long/float/double/boolean/char 등)

  2. String, List, Map, CharSequence 및 기타 클래스

  3. 기타 AIDL 인터페이스 유형

  4. 모든 Parcelable 클래스

번들은 데이터 유형을 전달할 수 있습니다:

1, byte/short/int/long/float/double/boolean/char 또는 해당 배열과 같은 8가지 기본 유형

2, String, charsequence 또는 해당 배열(object() 또는 객체 배열일 수도 있음)

3. Bundle.putSerialized(Key, Object); //직렬화 가능 인터페이스를 구현하는 객체

4. Bundle.putParcelable(Key, Object) //Parcelable 인터페이스를 구현하는 객체

sharedpreference는 어떤 데이터 유형을 저장할 수 있나요?

sharedpreference는 어떤 데이터 유형을 저장할 수 있나요?

sharedpreference는 어떤 데이터 유형을 저장할 수 있나요?

sharedpreference는 어떤 데이터 유형을 저장할 수 있나요?

의도 전송 가능 데이터 유형:

의도 전송 유형(abcd)

A, 직렬화 가능 B. 문자 순서 C. 소포 가능 D. Bundle

1, 8가지 기본 데이터 유형 및 해당 배열

2, String/Charsequence 및 해당 배열

3, Parcelable 및 해당 배열/Serialized

4, 번들/intent

sharedpreference는 어떤 데이터 유형을 저장할 수 있나요?

sharedpreference는 어떤 데이터 유형을 저장할 수 있나요?

sharedpreference는 어떤 데이터 유형을 저장할 수 있나요?

관련 무료 학습 권장사항: Java 기본 튜토리얼

위 내용은 sharedpreference는 어떤 데이터 유형을 저장할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.