ホームページ  >  記事  >  Java  >  共有設定ではどのようなデータ型を保存できますか?

共有設定ではどのようなデータ型を保存できますか?

醉折花枝作酒筹
醉折花枝作酒筹オリジナル
2021-06-03 14:51:485589ブラウズ

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

AIDL でサポートされるデータ型

  1. すべての基本型 (byte/short/int/long/float/double/boolean/char など) .)

  2. #String、List、Map、CharSequence およびその他のクラス

  3. その他の AIDL インターフェイス タイプ

  4. すべての Parcelable クラス

bundle はデータ型を渡すことができます:

1、byte/short/int/long/float/double/boolean/ などの 8 つの基本型char またはそれに対応する配列

2、文字列、charsequence、または対応する配列は、オブジェクト () またはオブジェクト配列にすることもできます。

3. Bundle.putSerializable(Key, Object); //Serializable インターフェイスを実装するオブジェクト

4. Bundle.putParcelable(Key, Object); //Parcelable インターフェイスを実装するオブジェクト

共有設定ではどのようなデータ型を保存できますか?

共有設定ではどのようなデータ型を保存できますか?

共有設定ではどのようなデータ型を保存できますか?

共有設定ではどのようなデータ型を保存できますか?##インテントの渡せるデータ型:

インテント配信タイプ (abcd)

A、シリアル化可能 B. 文字シーケンス C. パーセル可能 D. バンドル

1、8 つの基本データ型とその対応する配列

2、文字列/文字列とその対応する配列

3、Parcelable とそれに対応する配列/Serializable

4、バンドル/インテント

共有設定ではどのようなデータ型を保存できますか?

共有設定ではどのようなデータ型を保存できますか?

共有設定ではどのようなデータ型を保存できますか?## 関連する無料学習 推奨:

Java の基本チュートリアル

以上が共有設定ではどのようなデータ型を保存できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。