SharedPreferences ne peut enregistrer que des types de données simples et ne peut stocker que des types de données chaîne, int, float, long et booléen. Si vous devez accéder à des types de données plus complexes tels que des classes ou des images, vous devez encoder les données.
L'environnement d'exploitation de ce tutoriel : système Windows 7, version Java 10, ordinateur Dell G3.
Nous avons souvent besoin de sauvegarder des données lors du développement quotidien. Les méthodes de stockage courantes dans Android incluent SQLite, sharedPreferences, etc. Bien sûr, elles ont également leurs propres scénarios d'application. La première convient pour sauvegarder plus de données, tandis que la première est adaptée pour sauvegarder plus de données. ce dernier est plus enclin à enregistrer les préférences de l'utilisateur, telles que l'état de sélection d'une certaine case à cocher, l'état de connexion de l'utilisateur, les informations de configuration, la fonction de mémorisation du mot de passe, etc., les fichiers sont lus sous la forme de paires clé-valeur.
Mais chaque fois qu'une donnée est stockée, une clé doit être fournie. Si vous souhaitez stocker plusieurs données, ne devez-vous pas écrire plusieurs clés ? Par exemple, nous voulons enregistrer les informations de connexion d'un utilisateur, telles que le pseudo de l'utilisateur, la signature personnalisée, l'heure de connexion... Nima, si j'écris une donnée, je peux jouer à Luo. De toute façon, je ne supporte pas. Alors, pouvons-nous encapsuler les informations utilisateur et les stocker avec une seule clé ? La réponse est oui~
Les flux d'entrée et de sortie d'octets fournis dans la bibliothèque de classes Java peuvent facilement nous aider à terminer la conversion réversible de tout type en chaîne, puis nous pouvons l'enregistrer dans Share~
SharedPreferences Seuls les types de données simples peuvent être enregistrés, tels que les quatre types de base (int, float, long, boolean) + String. Si vous avez besoin d'accéder à des types de données plus complexes tels que des classes ou des images, vous devez encoder les données, généralement les convertir en codage Base64, puis enregistrer les données converties sous la forme d'une chaîne dans un fichier XML.
Types sauvegardables :
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);
Méthode 1 : fastJson/Gson/Jackson convertit l'objet en chaîne puis l'enregistre.
Méthode 2 : ObjectOutputStream convertit l'objet en flux, base64 convertit le flux en chaîne, puis l'enregistre.
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; } }
Utilisez SharedPreference pour enregistrer les données de la liste. En fait, vous pouvez enregistrer les objets Object
Notes de développement Android - SharedPreferences stocke les classes d'entités et tout type
Persistance des données Android SharedPreference
Tous les types de base (byte/short/int/long/float/double/boolean/char, etc. .)
String, List, Map, CharSequence et autres classes
Autres types d'interface AIDL
Toutes les classes Parcelable
1, huit types de base tels que byte/short/int/long/float/double/boolean/ char ou Leurs tableaux correspondants
2, String, charsequence ou tableaux correspondants peuvent également être des objets () ou des tableaux d'objets.
3. Bundle.putSerializing(Key,Object); //Objet qui implémente l'interface Serialisable
4. Bundle.putParcelable(Key, Object);
Type de livraison d'intention (abcd)
A, sérialisable B. séquence de caractères C. Parcelable D. Bundle
1. Huit types de données de base et leurs tableaux correspondants
2 String/Charsequence et leurs tableaux correspondants
3. 🎜>
4. bundle/intentionApprentissage gratuit associé recommandé : Tutoriel de base Java
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!