ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android] SharedPreferences
    Android 2021. 4. 6. 17:29
    반응형

     

    SharedPreferences API는 앱 내부에 key-value로 저장할 수 있는 파일을 통해 데이터를 저장하거나 읽을 수 있다.

     

    데이터 파일에 접근하기

    getSharedPreferences() 와 getPreferences()을 통해 파일을 생성하거나 기존 파일에 접근할 수 있다.

     

    getSharedPreferences()는 첫번째 인자에 저장소의 식별자를 지정하여 사용할 수 있고 다른 액티비티에서 사용가능하다.

    하나의 파일만 사용하는 경우에는 getPreferences()을 사용해서 식별자를 지정할 필요가 없으나, 해당 액티비티에서만 사용 가능하다.

    * 주로 getSharedPreferences()를 사용!

    SharedPreferences sharedPref = getSharedPreferences("pref", Context.MODE_PRIVATE);

     

    데이터 저장하기

    데이터를 저장하기 위해서는 SharedPreferences.Editor 객체가 필요하다.

    Editor객체는 SharedPreferences 객체에서 edit()메서드를 호출해서 생성할 수 있다.

     

    Editor는 putOOO()와 같은 데이터 타입에 따라 저장할 데이터를 설정할 수 있는 메서드를 제공한다.  ex) putString(), putInt(), ...

    메서드의 첫번째 인자로 키와 두번째 인자로 저장할 값을 전달하여 저장할 데이터를 설정할 수 있고,

    apply() 혹은 commit() 메서드를 호출하여 데이터를 저장한다.

    SharedPreferences sharedPref = getSharedPreferences("pref", Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPref.edit(); 
    editor.putInt("score", 100); 
    editor.commit();

    apply와 commit 메서드의 차이는 비동기와 동기의 차이다.

    apply()는 메모리 내 SharedPreferences는 즉시 변경하지만 디스크 업데이트를 비동기적으로 처리한다.

    반면에 commit()은 데이터를 디스크에 동기적으로 저장하기 때문에 UI스레드에서 호출하는 것은 지양한다.

     

    데이터 읽어오기

    데이터를 읽어올 때는 SharedPreferences 객체에서 getOOO()와 같은 메서드를 호출하여 원하는 값을 얻을 수 있다.

    ex) getInt(), getString(), ...

     

    해당 키에 대한 값이 존재하지 않을 경우에는 두번째 파라미터로 넣은 값을 기본값으로 반환한다.

    SharedPreferences sharedPref = getSharedPreferences("pref", Context.MODE_PRIVATE); 
    int score = sharedPref.getInt("score", 0);

     

     

     

     

    +) SharedPreferences는 주로 SharedPreferences에 접근해서 데이터를 얻는 클래스를 별도로 작성해서 사용한다.

    댓글