안드로이드 상태 저장

2013. 12. 31. 14:51Programing/Android / Java

어플을 제작 하다 보면, 상태를 기억해야 하는 경우가 많이 존재 한다.
내가 기입한 전화번호를 기억 한다던가, 작성하던 글을 기억 한다던가, ID를 기억 한다던가 등등.
개발자 입장으로 이야기 하면, CheckBox의 상태 기억, 마직막 설정 값 기억 등등을 이야기 할 수 있을거 같다.
해결책은 간단하다.
SharedPreferences를 사용하면 된다.
사용법 또한 매우 간단해서, 아래 예제를 참조하면 이해가 가능 할 것이다.


1. Save Data

  
   SharedPreferences shprefs
                          = getSharedPreferences((String)"GroupSMSApp", MODE_PRIVATE);
    SharedPreferences.Editor preeditor = shprefs.edit();
    preeditor.putString((String)"s_prefix",  mPrefix);
    preeditor.putString((String)"s_postfix", mPostfix);
    preeditor.putString((String)"s_message", mMessage);
    preeditor.commit();


2. Getting Data

    
    SharedPreferences prefs =
               getApplicationContext().getSharedPreferences((String)"GroupSMSApp", 0);

    String mStrEditPrefix  = prefs.getString((String)"s_prefix", "");
    if(mStrEditPrefix != null)
        mEditPrefix.setText(mStrEditPrefix);

    String mStrEditPostfix = prefs.getString((String)"s_postfix", "");
    if(mStrEditPostfix != null)
        mEditPostfix.setText(mStrEditPostfix);

    String mStrEditMessage = prefs.getString((String)"s_message", "");
    if(mStrEditMessage != null)
        mEditMessage.setText(mStrEditMessage);


getSharedPreferences는 Context 메서드이기 때문에,

Activity를 상속받은 클래스에서는 바로 사용 가능하지만 그렇지 않을 때는

context 객체를 전달받은 후 context.getSharedPreferences()로 사용하면 되겠다.


3. Saved Location
    data/data/PACAKGE_NAME/shared_prefs/GroupSMSApp.xml

    


4. MODE

MODE는 파일생성모드로,

MODE_APPEND                     : 파일이 존재할 때 마지막부분에 계속 붙여서 작성하는 방식

MODE_PRIVATE                     : 위 메서드의 기본값으로, 호출한 앱에서만 파일 사용이 가능

MODE_WORLD_READABLE     : 모든 앱에서 이 파일을 읽을 수 있는 것

MODE_WORLD_WRITEABLE    : 모든 앱에서 이 파일을 수정할 수 있는 것

MODE_MULTI_PROCESS        : 다른 프로세스에서 사용 중 인지 체크한 후 사용


일반적으로 가장 많이 사용하는 건, MODE_PRIVATE 이다.