Heim >Java >JavaBase >Welche Datentypen können sharedpreferences speichern?

Welche Datentypen können sharedpreferences speichern?

醉折花枝作酒筹
醉折花枝作酒筹Original
2021-06-03 14:51:485632Durchsuche

SharedPreferences kann nur einfache Datentypen und nur die Datentypen String, Int, Float, Long und Boolean speichern. Wenn Sie auf komplexere Datentypen wie Klassen oder Bilder zugreifen müssen, müssen Sie die Daten kodieren.

Welche Datentypen können sharedpreferences speichern?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Java 10-Version, Dell G3-Computer.

Wir müssen in der täglichen Entwicklung häufig Daten speichern, darunter SQLite, SharedPreferences usw. Natürlich gibt es auch ihre eigenen Anwendungsszenarien, während letztere eher zum Speichern von Daten geeignet sind Speichern Sie Benutzereinstellungen wie den Auswahlstatus eines bestimmten Kontrollkästchens, den Anmeldestatus des Benutzers, Konfigurationsinformationen, die Implementierung der Passwortspeicherfunktion usw. werden alle aus Dateien in Form von Schlüssel-Wert-Paaren gelesen.

Aber jedes Mal, wenn ein Datenelement gespeichert wird, muss ein Schlüssel bereitgestellt werden. Wenn Sie mehrere Daten speichern möchten, müssen Sie dann nicht mehrere Schlüssel schreiben? Zum Beispiel möchten wir die Anmeldeinformationen eines Benutzers speichern, z. B. den Spitznamen des Benutzers, die personalisierte Signatur, die Anmeldezeit ... Nima, wenn ich ein paar Daten schreibe, kann ich eine Partie Luo spielen. Ich kann es sowieso nicht ertragen Können wir also Benutzerinformationen kapseln und in einem Schlüssel speichern? Die Antwort lautet „Ja“ ~
Die in der Java-Klassenbibliothek bereitgestellten Byte-Eingabe- und Ausgabeströme können uns leicht dabei helfen, die umkehrbare Konvertierung eines beliebigen Typs in einen String abzuschließen, und dann können wir ihn in Share speichern ~

SharedPreferences kann nur Daten einfacher Typen speichern , wie zum Beispiel vier Grundtypen (int, float, long, boolean) + String. Wenn Sie auf komplexere Datentypen wie Klassen oder Bilder zugreifen müssen, müssen Sie die Daten kodieren, normalerweise in die Base64-Kodierung konvertieren und die konvertierten Daten dann in Form einer Zeichenfolge in einer XML-Datei speichern.

Welche Datentypen können sharedpreferences speichern?

Einfach zu verwenden:

Speicherbare Typen:

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

Speicherobjekte:

Methode 1: fastJson/Gson/Jackson wandelt das Objekt in einen String um und dann Nochmals speichern.

Methode 2: ObjectOutputStream konvertiert das Objekt in einen Stream, base64 konvertiert den Stream in einen String und speichert ihn dann.

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

Referenz:

Verwenden Sie SharedPreference, um Listendaten zu speichern. Tatsächlich können Sie Objektobjekte speichern.

Android-Entwicklungshinweise: SharedPreferences speichert Entitätsklassen und alle Typen

Alle Grundtypen (Byte/Short/Int/Long/Float/Double/Boolean/Char usw.)

  1. String, List, Map, CharSequence und andere Klassen

  2. Andere AIDL-Schnittstellentypen

  3. All Parcelable Class

  4. bundle kann Datentypen übergeben:

    1, acht Grundtypen wie Byte/Short/Int/Long/Float/Double/Boolean/Char oder die entsprechenden Arrays
2, String, Charsequenz oder entsprechendes Array, das auch ein object() oder ein Array von Objekten sein kann.

3. Bundle.putSerializable(Key, Object); //Objekt, das die Serializable-Schnittstelle implementiert

4. //Objekt, das die Parcelable-Schnittstelle implementiert

Welche Datentypen können sharedpreferences speichern?

Welche Datentypen können sharedpreferences speichern?

Welche Datentypen können sharedpreferences speichern?Intent Transferable Data Type:

Intent Transfer Type (abcd)Welche Datentypen können sharedpreferences speichern?

A, Serialisierbar B. Zeichenfolge C. Paketversand D. Bundle

1, acht grundlegende Datentypen und ihre entsprechenden Arrays

2, String/Charsequence und ihre entsprechenden Arrays

3, Parcelable und ihre entsprechenden Arrays/Serializable

4, Bundle/Intent

Welche Datentypen können sharedpreferences speichern?

Welche Datentypen können sharedpreferences speichern?

Verwandte kostenlose Lernempfehlungen:

Welche Datentypen können sharedpreferences speichern?

Java-Grundlagen-Tutorial

Das obige ist der detaillierte Inhalt vonWelche Datentypen können sharedpreferences speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn