SharedPreferencesノート

5268 ワード

  • 簡単な運用
  • キーメソッド
  • の表示と削除
  • 運用間アクセス
  • パッケージされたツールクラス
  • 作成、書き込み、読み取りの操作
    SharedPreferences sp = getSharedPreferences("ZHIFU_progress",0);
    sp.edit().putString("StarImgUrl",url).commit();
    StarImgUrl = sp.getString("StarImgUrl","-1");
    
    getSharedPreferencesの2番目のパラメータは、データを保存するポリシーgetStringの2番目のパラメータがデフォルトの戻り値であることを決定し、オブジェクトが見つからない場合に戻る
    SharedPreferencesキーメソッド
  • 書き込み前に、sharepreferencesオブジェクトによってEditorオブジェクトが取得され、書き込みが可能になります.
  • Editor editor = sharedPreferences.edit();// 
    

    また、書き込み後にcommitメソッドを呼び出すと保存されます.
    editor.putInt("num", 4);
    editor.commit();// 
    //editor.apply();
    

    commitとapplyの違いはcommitがbooleanを返すことです
  • getSharedPreferences保存ポリシー
  • を選択
    /**
     * @param mode
     * MODE_PRIVATE  // 
     * MODE_APPEND   // 
     * MODE_PRIVATE  // , 
     * MODE_WORLD_READABLE  // 
     * MODE_WORLD_WRITEABLE  // 
     */
    SharedPreferences getSharedPreferences(String filename,int mode)
    
  • 取得保存データは、異なるデータ型に応じてgetInt()やgetString()などの
  • を呼び出す.
    StarImgUrl = sp.getString("StarImgUrl","-1");
    

    上記のように、2番目のパラメータは、対応するkeyのデータが存在しない場合に返されるデフォルト値を指す.
    表示と削除
  • 調べ、実際にsharepreferencesはデータをxmlファイルとして保存し、/data/data//shared_prefsの下に存在し、DDMSを開くFiler Explorer (Android Studio > Tools > Android > Android Device Monitor)
  • を調べた.
    
    
        https://pic1.zhimg.com/v2-e23d74346687ec1f12c07e7394888b74.jpg
    
    

    本体デバッグ時にDDMSでdataフォルダを開くには権限が必要で、Android StudioのDDMSではdataディレクトリを開くことができません
  • fileオブジェクトでファイルを見つけて削除します.
  • File file= new File("/data/data/"+getPackageName().toString()
                  +"/shared_prefs","ZHIFU_progress.xml");
    if(file.exists()){
      file.delete();
    }
    

    その他のアプリケーションの情報へのアクセス
    参考Android-sharepreferenceまとめ
  • アクセスファイル作成時に指定するモードContext.MODE_WORLD_READADBLEまたはContext.MODE_WORLD_WRITEABLE.
  • その後、上のContextを作成し、Contextを介してPreferencesにアクセスする必要があります.preferenceにアクセスすると、パッケージの下にあるshared_が適用されます.prefsディレクトリpreference:
  • Context otherAppsContext = createPackageContext("com.wujay.action", Context.CONTEXT_IGNORE_SECURITY);
    SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences("wujay", Context.MODE_WORLD_READABLE);
    String name = sharedPreferences.getString("name", "");
    int age = sharedPreferences.getInt("age", 0);
    

    Contextを作成して他のアプリケーションのpreferenceにアクセスしない場合は、xmlファイルを読み込むことで、次のような他のアプリケーションのpreferenceに対応するxmlファイルに直接アクセスできます.
    File xmlFile = new File(“/data/data//shared_prefs/itcast.xml”);
    //

    単純にカプセル化されたツールクラス
    public class SharePreferenceUtils {
    
        private SharedPreferences mSharedPreferences;
        private SharedPreferences.Editor mEditor;
    
        public SharePreferenceUtils(Context context,String name){
            mSharedPreferences = context.getSharedPreferences(name,Context.MODE_PRIVATE);
            mEditor = mSharedPreferences.edit();
        }
    
        /**
         *  
         * @param key  
         * @param data  
         */
        public void putAndApply(String key,Object data){
            if (data instanceof String) {
                mEditor.putString(key, (String) data);
            } else if (data instanceof Integer) {
                mEditor.putInt(key, (Integer) data);
            } else if (data instanceof Boolean) {
                mEditor.putBoolean(key, (Boolean) data);
            } else if (data instanceof Float) {
                mEditor.putFloat(key, (Float) data);
            } else if (data instanceof Long) {
                mEditor.putLong(key, (Long) data);
            } else {
                mEditor.putString(key, data.toString());
            }
            mEditor.apply();
        }
    
        /**
         *  
         * @param key  
         * @param defaultObject  , 
         * @return
         */
        public Object getValue(String key,Object defaultObject){
            if (defaultObject instanceof String) {
                return mSharedPreferences.getString(key, (String) defaultObject);
            } else if (defaultObject instanceof Integer) {
                return mSharedPreferences.getInt(key, (Integer) defaultObject);
            } else if (defaultObject instanceof Boolean) {
                return mSharedPreferences.getBoolean(key, (Boolean) defaultObject);
            } else if (defaultObject instanceof Float) {
                return mSharedPreferences.getFloat(key, (Float) defaultObject);
            } else if (defaultObject instanceof Long) {
                return mSharedPreferences.getLong(key, (Long) defaultObject);
            } else {
                return null;
            }
        }
    
        /**
         *   key  
         * @param key
         */
        public void remove(String key){
            mEditor.remove(key);
        }
    
        /**
         *  
         */
        public void clear(){
            mEditor.clear();
        }
    
        /**
         *   key  
         * @param key
         * @return
         */
        public boolean isContains(String key){
            return mSharedPreferences.contains(key);
        }
    }