iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
Mobile Development

Android studio 30天新手筆記系列 第 16

Day16-Android新手筆記-SharedPreferences

  • 分享至 

  • xImage
  •  

SharedPreferences以"Key-Value"對應的方式將資料儲存於XML檔中,使用時只需短短幾行程式碼。當你離開APP後重新啟用時,資料並不會消失,使用Key就可讀取到上一次儲存的資料。

資料儲存格式為XML檔,檔案儲存於DATA/data/當前檔案名稱/shared_prefs文件夾中。

/images/emoticon/emoticon31.gif

接下來直接從程式碼去切入今天主題:
首先建立兩個Activity,分別為MainActivity與TestActivity

MainActivity:


public class MainActivity extends AppCompatActivity {

    SharedPreferences sharedPreferences;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String name = "Alex";
        sharedPreferences = getSharedPreferences("UserData",MODE_PRIVATE);
        sharedPreferences.edit()
                .putString("valueName",name)
                .commit();

        Intent intent = new Intent(MainActivity.this,TestActivity.class);
        startActivity(intent);
    }
}

TestActivity:


public class TestActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        
        String nameeResponse = getSharedPreferences("UserData",MODE_PRIVATE)
                .getString("valueName","");

        Log.e("Test",nameeResponse);
    }
}

設定權限

getSharedPreferences("UserData",MODE_PRIVATE)

透過getSharedPreferences用來設定SharedPreferences的偏好設定,並取得物件。

第一個參數用來設定XML的檔名,例如第一個參數設為UserData,那shared_prefs文件夾下會產生UserData.xml檔。

第二個參數用來設定存取權限,參數如下:

  1. MODE_PRIVATE
    只允許在本應用程式中使用
  2. MODE_MULTI_PROCESS
    允許多個線程同時使用這個檔案,雖然允許多個線程同時使用,但並不是同步更新,當你其他線程要使用時,需要去getSharedPreferences重新從XML加載。
  3. MODE_WORLD_READABLE
    讓所有應用程式都能讀取這個檔案。
  4. MODE_WORLD_WRITEABLE
    讓所有應用程式都能讀取與寫入這個檔案。

寫入檔案

寫入檔案時,需要先透過edit()方法取得Editor物件,後putString()方法將欲儲存資料存入XML檔中,最後呼叫commit()方法,這時候資料才真正寫入XML檔中。

sharedPreferences.edit()
                .putString("valueName",name)
                .commit();

讀取檔案

讀取檔案時,首先先取得SharedPreferences物件,後透過get()方法讀取先前已寫入的資料,getString()方法為讀取字串,還有一些可對應其他資料型態的方法,例如:getInt()、getFloat()等方法。

String nameeResponse = getSharedPreferences("UserData",MODE_PRIVATE)
                .getString("valueName","");

結果如下:

Log.e("Test",nameeResponse);

/images/emoticon/emoticon41.gif


上一篇
Day15-Android新手筆記-DataBinding+onClick
下一篇
Day17-Android新手筆記-RecyclerView元件基本介紹
系列文
Android studio 30天新手筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言