SharedPreferences は単純なタイプのデータのみを保存でき、string、int、float、long、boolean データ タイプのみを保存できます。クラスや画像などのより複雑なデータ型にアクセスする必要がある場合は、データをエンコードする必要があります。
このチュートリアルの動作環境: Windows7 システム、Java10 バージョン、Dell G3 コンピューター。
日々の開発では、データを保存する必要があることがよくあります。Android で一般的に使用される保存方法には、SQLite、sharedPreferences などが含まれます。もちろん、独自のアプリケーション シナリオもあります。前者は、より多くのデータを保存するのに適しており、特定のチェックボックスの選択状態、ユーザーのログイン状態、設定情報、パスワードを記憶する機能などのユーザー設定を保存するために、ファイルはキーと値のペアの形式で読み取られます。
しかし、データを保存するたびにキーを指定する必要があります。複数のデータを保存したい場合、複数のキーを記述する必要はありませんか?たとえば、ユーザーのニックネーム、個人の署名、ログイン時間などのユーザーのログイン情報を保存したいとします... ニーマ、データを 1 つ書き込めば、ルオのゲームがプレイできるのです。とにかく、我慢できません。そこで、ユーザー情報をカプセル化して 1 つのキーで保存するのはどうでしょうか?答えは「はい」です~
Java クラス ライブラリで提供されるバイト入力および出力ストリームを使用すると、任意の型から String への可逆変換を簡単に完了でき、それを Share~
SharedPreferences に保存できます。 4 つの基本タイプ (int、float、long、boolean) String などの単純なタイプのデータのみを保存できます。クラスやイメージなどのより複雑なデータ型にアクセスする必要がある場合は、データをエンコードし、通常は 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 など) .)
##インテントの渡せるデータ型:
A、シリアル化可能 B. 文字シーケンス C. パーセル可能 D. バンドル
1、8 つの基本データ型とその対応する配列
2、文字列/文字列とその対応する配列
3、Parcelable とそれに対応する配列/Serializable
4、バンドル/インテント
## 関連する無料学習 推奨:
以上が共有設定ではどのようなデータ型を保存できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。