Android開發 - 儲存輔助類 SharedPreferences 解析

阿俊学JAVA發表於2024-07-26

SharedPreferences簡介

  • SharedPreferencesAndroid平臺上一個輕量級的儲存輔助類,用來儲存應用的一些常用配置SharedPreferences的資料以鍵值對(key, val)的進行儲存在以xml形式的檔案中。在應用中通常做一些簡單資料的持久化快取

  • editorput方法可以看出SharedPreferences提供了Stringsetintlongfloatboolean六種資料型別editor類核心方法

  • getSharedPreferences(String name, int mode)

    • 引數解析
      • name:儲存檔案名字
      • mode儲存方式;取值如下:
        • Context.MODE_PRIVATE:指定該SharedPreferences資料只能被本應用程式讀、寫
        • Context.MODE_WORLD_READABLE:指定該SharedPreferences資料能被其他應用程式讀,但不能寫
        • Context.MODE_WORLD_WRITEABLE:指定該SharedPreferences資料能被其他應用程式寫,但不能讀
        • Context.MODE_APPEND:該模式會檢查檔案是否存在,存在就往檔案追加內容,否則就建立新檔案

SharedPreferences使用

增加資料

  • 程式碼例項

    //透過對應儲存檔名得到要操作的SharedPreferences物件
    SharedPreferences sharedPreferences = getSharedPreferences("user",MODE_PRIVATE);
    //獲取Editor物件的引用
    SharedPreferences.Editor editor = sharedPreferences.edit();
    //將值以鍵值對(key, val)格式放入檔案
    editor.putString("name", "lucas");
    editor.putInt("age", 30);
    editor.putBoolean("islogin",true);
    // 提交資料
    editor.commit();
    
  • 點選新增按鈕以後我們可以看到在data/data/應用程式包名/shared_prefs資料夾下生成了一個user.xmlxml檔案。點選可以開啟該檔案,可以看到該檔案儲存瞭如下的資料

    <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
    <map>
        <string name="name">lucas</string>
        <int name="age" value="30" />
        <boolean name="islogin" value="true" />
    </map>
    
  • 效果展示

    Android開發 - 儲存輔助類 SharedPreferences 解析

讀取資料

  • 讀取資料可以透過獲取SharedPreferences物件,透過SharedPreferences 物件可以獲取儲存的資料值,第二個引數一般是個預設值,表示當獲取資料的時候沒有該key則返回一個預設值

    SharedPreferences sharedPreferences = getSharedPreferences("user", MODE_PRIVATE);
    String name = sharedPreferences.getString("name","");
    int age = sharedPreferences.getInt("age",0);
    boolean islogin = sharedPreferences.getBoolean("islogin",true);
    Log.i("lucashu","name:"+ name +" age:" + age +" islogin:" + islogin);
    

刪除資料

  • 刪除資料增加資料有點類似 也是透過Editor物件來完成

    //透過對應儲存檔名得到要操作的SharedPreferences物件
    SharedPreferences sharedPreferences = getSharedPreferences("user",MODE_PRIVATE);
    //獲取Editor物件的引用
    SharedPreferences.Editor editor = sharedPreferences.edit();
    //刪除key對應的值
    editor.remove("name");
    // 提交資料
    editor.commit();
    

修改資料

  • 修改資料增加資料類似,覆蓋原來的資料即修改資料

    //透過對應儲存檔名得到要操作的SharedPreferences物件
    SharedPreferences sharedPreferences = getSharedPreferences("user",MODE_PRIVATE);
    //獲取Editor物件的引用
    SharedPreferences.Editor editor = sharedPreferences.edit();
    //將新的值放入要修改資料對應的key進行覆蓋
    editor.putString("name", "lucas1");
    editor.putInt("age", 31);
    editor.putBoolean("islogin",false);
    // 提交資料
    editor.commit();
    

清除資料

  • 可以透過Editor物件的clear方法來完成清除資料

    //透過對應儲存檔名得到要操作的SharedPreferences物件
    SharedPreferences sharedPreferences = getSharedPreferences("user", MODE_PRIVATE);
    //獲取Editor物件的引用
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.clear();
    // 提交資料
    editor.commit();
    
  • 清除以後user.xml檔案並不會刪除,但裡面的資料都沒了

相關文章