SharedPreferences는 간단한 유형의 데이터만 저장할 수 있으며 string, int, float, long 및 boolean 데이터 유형만 저장할 수 있습니다. 클래스나 이미지와 같은 더 복잡한 데이터 유형에 액세스해야 하는 경우 데이터를 인코딩해야 합니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, Java 10 버전, Dell G3 컴퓨터.
일상 개발에서 데이터를 저장해야 하는 경우가 많습니다. Android에서 일반적으로 사용되는 저장 방법에는 SQLite, sharedPreferences 등이 있습니다. 물론 전자는 더 많은 데이터를 저장하는 데 적합하지만 후자는 그런 경향이 있습니다. 사용자 기본 설정을 저장합니다. 특정 확인란의 선택 상태, 사용자 로그인 상태, 구성 정보, 비밀번호 기억 기능 구현 등과 같은 설정은 모두 키-값 쌍의 형태로 파일에서 읽혀집니다.
하지만 데이터가 하나 저장될 때마다 키를 제공해야 하는 것이지요. 여러 개의 데이터를 저장하려면 키를 여러 개 작성해야 하는 것 아닌가요? 예를 들어 사용자 닉네임, 개인 서명, 로그인 시간 등 사용자의 로그인 정보를 저장하고 싶습니다. 니마, 데이터 하나만 쓰면 루오 게임을 할 수 있습니다. 그렇다면 사용자 정보를 캡슐화하여 하나의 키로 저장하는 것은 어떨까요? 대답은 '예'입니다~
Java 클래스 라이브러리에서 제공되는 바이트 입력 및 출력 스트림을 사용하면 모든 유형을 문자열로 가역적으로 변환할 수 있으며 이를 Share에 저장할 수 있습니다~
SharedPreferences는 간단한 유형의 데이터만 저장할 수 있습니다 , 예를 들어 네 가지 기본 유형(int, float, long, boolean) + 문자열. 클래스나 이미지 등 더 복잡한 데이터 유형에 액세스해야 하는 경우 데이터를 인코딩하고 일반적으로 Base64 인코딩으로 변환한 다음 변환된 데이터를 문자열 형식으로 XML 파일에 저장해야 합니다.
저장 가능한 유형:
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
모든 기본 유형(byte/short/int/long/float/double/boolean/char 등)
String, List, Map, CharSequence 및 기타 클래스
기타 AIDL 인터페이스 유형
모든 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 인터페이스를 구현하는 객체
의도 전송 유형(abcd)
A, 직렬화 가능 B. 문자 순서 C. 소포 가능 D. Bundle
1, 8가지 기본 데이터 유형 및 해당 배열
2, String/Charsequence 및 해당 배열
3, Parcelable 및 해당 배열/Serialized
4, 번들/intent
관련 무료 학습 권장사항: Java 기본 튜토리얼
위 내용은 sharedpreference는 어떤 데이터 유형을 저장할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!