안드로이드/이론관련

SharedPreferences (안드로이드)

닉네임못짓는사람 2021. 10. 25. 01:30
반응형

SharedPreferences?


SharedPreferences는 안드로이드에서 사용할 수 있는 내부 데이터 저장소이다.

개발 진행시 앱의 데이터들을 저장하고, 이들을 관리해야 하는 경우가 있을 수 있는데

이런 경우 중요하거나 많은 양의 데이터는 DB 또는 서버에 저장하는 방법을 사용할 수 있다.

 

하지만 간단한 데이터, 설정값 등을 DB를 상요해서 저장하기에는 애매하다고 생각할 수 있다.

이런 때를 위해서 안드로이드에선 SharedPreferences를 사용할 수 있다.

 

SharedPreferences는 데이터를 파일로 저장하는데, 해당 파일은 앱 폴더 내부에 저장되기 때문에

앱을 삭제하면 당연하게도 이 데이터는 같이 삭제된다. (파일 형식은 XML)

 

SharedPreferences는 데이터를 Key:Value형태로 기본형 타입 데이터만 저장할 수 있다.

(boolean, int, float등등)

 

예제


실제로 코드에서 SharedPreferences를 사용해보도록 하자.

사용하는 방법은 아주 간단한데, applicationContext에 접근해서 getSharedPreferences함수를 호출해주면 SharedPreferences객체를 반환한다.

val sf = applicationContext.getSharedPreferences("test", MODE_PRIVATE)

 

이때 파라미터가 두 개 들어가는데, 첫 번째는 SharedPreferences의 이름, 두 번째는 모드를 설정할 수 있다.

모드는 아래의 세 가지가 있었는데, 아래의 두 개는 API 17버전부터 Deprecated되었다.

MODE_PRIVATE : 외부 앱에서 접근 불가

MODE_WORLD_READABLE : 외부 앱에서 읽기 가능

MODE_WORLD_WRITEABLE : 외부 앱에서 쓰기 가능

 

아래에서 SharedPreferences에 데이터를 쓰고, 받아오는 코드를 확인해보도록 하자.

        val sf = applicationContext.getSharedPreferences("test", MODE_PRIVATE)

        sf.edit {
            putBoolean("boolean", false)
            putFloat("float", 1.0f)
            putInt("int", 1)
            putLong("long", 1L)
            putString("string", "string")
        }
        
        val boolean = sf.getBoolean("boolean", false)
        val float = sf.getFloat("float", 1.0f)
        val int = sf.getInt("int", 1)
        val long = sf.getLong("long", 1L)
        val string = sf.getString("string", "")

데이터를 저장하는 키워드는 put이며 뒤에 자료형이 붙는다.

여기서 중요한 점은 SharedPreferences에는 Primitive Type데이터만 넣을 수 있다는 점이다.

 

데이터를 불러오는 키워드는 get이며 마찬가지로 뒤에 자료형이 붙는다.

여기서 중요한 점운 default값을 지정해주어야 한다는 점이다.

반응형

'안드로이드 > 이론관련' 카테고리의 다른 글

ANR(Application Not Responding)  (0) 2021.12.18
View.GONE과 View.INVISIBLE의 차이  (0) 2021.12.08
LayoutInflater(안드로이드)  (0) 2021.10.25
Annotation(어노테이션)?  (0) 2021.08.18
핸들러(Handler)  (0) 2021.07.07