9

Android の世界で新しくなり、日々喜びとともに進歩しています ;) 一般的な使用法についての例を共有したいと思います。

一般的な LocalStore クラスで SharedPreferences を使用する例を次に示します。

メインアクティビティまたはサブアクティビティで使用される共通クラスを作成します。

    public class LocalStore {

        private static final String TAG = "LocalStore";
        private static final String PREF_FILE_NAME = "userprefs";

        public static void clear(Context context) {
            clear(context, "unknown");
        }
        public static void clear(Context context, String caller) {
            Editor editor = 
                context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit();
            editor.clear();
            editor.commit();
            Log.d(TAG, "caller:"+caller + "|clear LocalStore");
        }

        public static boolean setCustomBooleanData(String key, boolean value, Context context) {
        Editor editor =
            context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit();
        editor.putBoolean(key, value);

        return editor.commit(); 
    }
    public static boolean getCustomBooleanData(String key, Context context) {
        SharedPreferences savedSession =
            context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);

        return (savedSession.getBoolean(key, false));
    }

    public static boolean setCustomStringData(String key, String value, Context context) {
        Editor editor =
            context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit();
        editor.putString(key, value);

        return editor.commit(); 
    }
    public static String getCustomStringData(String key, Context context) {
        SharedPreferences savedSession =
            context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);

        return (savedSession.getString(key, null));
    }


    public static boolean isCustomStringExistInLocal(String customKey, Context context) {
        SharedPreferences savedSession =
            context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);

        return (savedSession.getString(customKey, null))==null?false:true;
    }

public static boolean saveObject(String objKey, Serializable dataObj, Context context) {
        Editor editor =
            context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit();
        editor.putString(objKey, ObjectSerializer.serialize(dataObj) );

        Log.d(TAG, "savedObject| objKey:"+objKey+"/" + dataObj.toString());

        return editor.commit(); 
    }
    public static Object getObject(String objKey, Context context) {
        SharedPreferences savedSession =
            context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);

        Object dataObj = ObjectSerializer.deserialize(savedSession.getString(objKey, null));

        return dataObj;
    }

    }

注:ここから ObjectSerializer を使用できます

楽しみ!


追加の更新: MEMDISKCACHEと SHAREDPREF を GENERIC_STORE として使用するライブラリを実装しました

4

2 に答える 2

2

それをさらに改善する方法についてのヒントが必要だと仮定すると、ここに行きます.

  • 通常、Android は規則に従い、Context変数を最初のパラメーターとして保持します。一般的なライブラリを作成するときは、これを行うことをお勧めします。
  • より一般的なものにしたい場合は、メソッドのオーバーロードを試してみませんか? これにより、開発者は、クラスでのエクストラの処理方法と同じように値を設定する際の柔軟性が向上しますIntent

例えば:

public static boolean setData(Context, String key, boolean value) {
        Editor editor = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit();
        editor.putBoolean(key, value);
        return editor.commit(); 
    }
public static boolean setData(Context, String key, String value) {
        Editor editor = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit();
        editor.putString(key, value);
        return editor.commit(); 
    }

したがって、次のようにオーバーロードされた関数を簡単に呼び出すことができます。

setData(this, "myBoolean", true);
setData(this, "myString", "Its Awesome");
于 2012-09-12T12:09:19.133 に答える