반응형

 만약 여러분이 저장하고자 하는 key-values 의 컬렉션(collection)이 비교적 작다면 여러분은 SharedPreference API 를 사용하시면 됩니다. SharedPreference 객체는 key-value 쌍을 포함하고 있는 파일을 나타내며 그것들을 읽고 쓰는 단수한 메소드를 제공합니다. 각 각의 SharedPreference 파일은 프레임워크(framework)에 의해 관리되며 프라이빗(private) 이거가 공유(Shared) 될 수 도 있습니다.


 이번 시간에는 여러분에게 단순한 값들을 저장하고 읽어오기 위해 SharedPreferences 를 사용하는 방법에 대해 보여드리고자 합니다.


 Note : SharedPreference API들은 오직 key-value 쌍을 읽고 쓰는 용도입니다. 여러분의 앱 설정(App Settings)에 대한 사용자 인터페이스를 만들때 사용하는 Preferences와 혼동하지 마세요(심지어 SharedPreference를 사용해서 앱 설정을 했다 하더라도).Preference API들에 대한 추가 정보를 원하시면 개발자사이트의 Settings 가이드를 참고하시기 바랍니다.


 

SharedPreference 핸들(Handle) 얻어오기 (Get a Handle to a SharedPreferences)

------------------------------------------------------------------

 여러분은 아래 두개의 메소드를 호출하여 새로운 Shared Preference를 만들거나 이미 존재하는 것에 연결할 수 있습니다.


° getSharedPreferences() - 만약 여러분이 첫번째 파라미터로 지정한 이름에 의해 식별이 되는 다중(여러개의 MultipleSharedPreference 파일을 만들 필요가 있다면 이것을 사용합니다. 여러분은 앱안의 어떤 Context에서든 이것을 호출할 수 있습니다.


° getPreferences() - 만약 액티비티에 대해 오직 한개의 Shared Preference 파일을 만들거라면 액티비티에서 이것을 사용합니다. 왜냐하면 이것은 액티비티에 소속되어 있는 기본 Shared Preference 파일을 주기때문입니다.  그래서 여러분은 이름은 제공할 필요가 없습니다.



 예를 들어보죠, 아래 코드는 Fragment 안에서 실행되어 집니다. 문자열 리소스 R.string.preference_file_key에 의해 식별되어진Shared Preferences 파일에 접속합니다. 그리고 private 모드로 열기 때문에 이 파일은 오직 여러분의 앱에서만 접속할 수 있습니다.

 Context context = getActivity();

 SharedPreferences sharedPref = context.getSharedPreferences(

        getString(R.string.preference_file_key), Context.MODE_PRIVATE);


 SharedPreference 파일의 이름을 지을 때, 여러붕은 "com.example.myapp.PREFERENCE_FILE_KEY" 와 같이 앱안에서 유일하게 식별되는 이름을 사용해야만 합니다.


 만약 여러분이 액티비티에 대해 오직 하나의 SharedPreference 파일만 필요하다면 위를 대신하여 getPreferences() 메소드를 사용할 수도 있습니다.

  SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);


 Caution : 만약 MODE_WORLD_READABLE 이나 MODE_WORLD_WRITEABLE 로 SharedPreferences 파일을 만들었다면, 식별자를 알고 있는 어떤 앱에서도 여러분의 데이터에 접속할 수 있게 됩니다.



Shared Preferences에 쓰기(Write to Shared Preferences)

------------------------------------------------

 Shared Preferences 파일에 쓰기 위해서는, SharedPreferences 객체의 edit() 메소드를 호출함으로서SharedPreferences.Editor 객체를 만들어 내야 합니다.


 putInt()와 putString() 같은 메소드를 통해 여러분이 쓰고자 하는 키(key)와 값(value)들을 전달합니다. 그런다음, 변경 사항들을 저장하기 위해 commit() 메소드를 호출합니다. 예:


 SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

 SharedPreferences.Editor editor = sharedPref.edit();

 editor.putInt(getString(R.string.saved_high_score), newHighScore);

 editor.commit();



SharedPreferences로부터 읽기(Read from Shard Preferences)

---------------------------------------------------

 Shared Preferences 파일에서 값을 가져오기 위해서는, getInt() getString()같은 메소드에 여러분의 원하는 값(value)의 키(key)를 제공하면 되고 선택적으로 혹시 제공한 key 값이 없다면 리턴될 기본 값을 부여합니다. 예:

 SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

 int defaultValue = getResources().getInteger(R.string.saved_high_score_default);

 long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);


반응형

+ Recent posts