태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.


* 이번에는 자동 로그인 등과 같은 기능을 구현할 때 유용하게 사용할 수 있는 기능인 SharedPreference에 대하여 알아보도록 하자.


- 이전 글

2012/11/07 - [Android(안드로이드) 앱 개발 기초] 안드로이드 프로젝트 생성하고 에뮬레이터로 앱 실행하기

2012/11/10 - [Android(안드로이드) 앱 개발 기초] 간단한 인터페이스 구현과 다른 Activity로 넘어가기

2012/11/21 - [Android(안드로이드) 앱 개발 기초] Activity 라이프사이클 공부

2012/11/24 - [Android(안드로이드) 앱 개발 응용] Google Map API로 지도 보여주기(MapView), Overlay Item 그려주기 예제

2012/11/28 - [Android(안드로이드) 앱 개발 응용] Location GPS 위치 가져오기 및 최적화

2012/12/05 - [Android(안드로이드) 앱 개발 기초] 런타임 설정(로테이션, orientation) 변환 라이프사이클

2012/12/19 - [Android(안드로이드) 앱 개발 응용] 쉽게 Google Map 위에 말풍선 띄우기

2013/03/03 - [Android(안드로이드) 앱 개발 기초] Fragment 기초

2014/09/24 - [Android(안드로이드) 앱 개발 기초] ContentProvider 앱 간 데이터 공유 기본



* Key-Value 저장하기

: 만약 키-값의 조합이 많지 않고 적다면 SharedPreference API를 사용하는 것이 좋다. SharedPreferences 객체는 키-값 조합을 가지는 파일을 가리키며, 간단한 방법으로 이를 읽고 쓸 수 있도록 해주고 있다. 각 SharedPreferences 파일은 프레임워크에서 관리되고 있으며, 이들이 공유되거나 private으로 만들수도 있다.


* 참고: SharedPreferences API는 키-값 조합을 단순히 쓰고 읽는 API에 해당되며, 사용자의 UI를 설정하거나 앱의 세팅을 설정하는 Preference API와 혼동해서는 안된다. Preference API는 내부적으로 SharedPreferences API를 쓰기는 하지만, 별도로 구분하여 사용하면 좋다.



* SharedPreferences 핸들 가져오기

: 아래의 몇 함수를 호출함으로써 SharedPreference의 새로운 파일을 생성할수도 있고, 기존에 있었던 파일을 다시 불러오는 것도 가능하다.


  • getSharedPreferences(): 여러 개의 shared preferences 파일이 필요하다면 이름으로 구분하여 가져올 때 사용한다. 앱 내부의 어느 Context에서든지 호출이 가능하다.
  • getPreferences(): 하나의 shared preference 파일을 사용한다면 Activity에서 호출하여 해당하는 파일을 가져올 수 있다. 이 때에는 Activity에 기본적으로 할당된 shared preference를 가져오므로 이름을 별도로 제공하지 않아도 된다.

: 예를 들면, 아래의 코드는 Fragment 안에서 실행될 수 있다. 이 때에 첫 번째 인자로 넘기는 문자열에 해당하는 shared preferences 파일에 접근하여 private 모드로 접근을 허용하게 된다.

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
        getString(R.string.preference_file_key), Context.MODE_PRIVATE);

: SharedPreferences 파일에 이름을 부여할 때에는 앱에서 유니크한 키 값을 설정하여 할당해줘야 한다. 아니면 만약 하나의 Activity에 하나의 shared preference 파일이 필요하다면 파일명 파라미터 없이 getPreference() 함수를 호출하면 된다.

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

* 주의: 만약 MODE_WORLD_READABLE이나 MODE_WORLD_WRITEABLE을 파라미터로 넘겨주게 된다면 다른 앱에서 파일명을 안다면 해당하는 데이터에 접근이 가능하게 된다.



* SharedPreferences에 값 쓰기

: SharedPreferences 파일을 쓰기 위해서는, edit()함수를 호출함으로써 SharedPreference.Editor를 생성해야 한다. 그리고 putInt()함수나 putString() 함수를 호출하여 키와 값을 넘겨주고 마지막에 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에서 값 읽기

: SharedPreferences 파일에서 값을 가져오기 위해서는 getInt()나 getString()과 같은 함수를 호출하여 가져올 수 있다. 키를 함수의 파라미터로 넘겨줌으로써 그에 해당하는 값을 가져올 수 있다. 만약 값이 존재하지 않는다면, 기본 값을 리턴하게 된다. 아래가 그 예이다.

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);




* 자동 로그인 기능 구현 방안

: 위의 SharedPreference를 통해서 자동 로그인 구현 방안을 생각해보면 아래와 같이 할 수 있다. 

public class LoginSharedPreference {
    public static void setLogin(Activity ctx, String userName) {
        Editor editor = ctx.getPreferences(Context.MODE_PRIVATE).edit();
        editor.putString(R.string.user_name, userName);
        editor.commit();
    }

    public static void logout(Activity ctx) {
        Editor editor = ctx.getPreferences(Context.MODE_PRIVATE).edit();
        editor.putString(R.string.user_name, "");
        editor.commit();
    }

    public static void isLogin(Activity ctx) {
        return ctx.getPreferences(Context.MODE_PRIVATE).getString(R.string.user_name, "") != "";
    }
}

: 로그인하게 되면 setLogin을 호출하고, 로그아웃을 하게 되면 logout함수를 호출, 그리고 자동 로그인 여부를 체크하기 위해서는 isLogin 함수를 호출하면 된다. 위의 함수들을 Activity 안에다가 넣을수도 있고, 별도의 클래스로 활용해도 될 것이다.


끝.



Portions of this page are reproduced from work created and shared by the Android Open Source Project and used according to terms described in theCreative Commons 2.5 Attribution License.

참고http://developer.android.com/training/basics/data-storage/shared-preferences.html



저작자 표시 비영리 동일 조건 변경 허락
신고

이 글을 공유하세요.

  • Niceidionix 2015.05.06 02:23 신고  댓글주소  수정/삭제  댓글쓰기

    [url=https://twitter.com/Healty_Pills]40 Attached, Easy Tips [/url]
    1. Write down what you devour in return one week and you will suffer defeat weight
    2. Add 10 percent to the amount of habitually calories you think you’re eating.
    3. Engage an online heaviness loss buddy to yield more weight.
    4. Catch a mantra
    5. After breakfast, cleave to water
    6. Devour three fewer bites of your go too far
    7. Look after a man less hour of TV
    8. Turn one's back on something forwards in a trice a week.
    9. Stay until your tolerance rumbles before you reach for food
    10. Odour a banana, an apple, or a peppermint when you pet hungry
    11. Gawk at the color gloomy
    12. Pack away in countenance of mirrors and you’ll escape moment
    13. Go through 10 minutes a day walking up...

  • Nicolidionix 2015.05.07 10:30 신고  댓글주소  수정/삭제  댓글쓰기

    [url=https://twitter.com/Healty_Pills]40 Extravagantly, Hands down Tips [/url]
    1. Ignore down what you devour for anecdote week and you whim suffer defeat mass
    2. Sum 10 percent to the amount of daily calories you think you’re eating.
    3. Get an online heaviness annihilation buddy to displace more weight.
    4. Go a mantra
    5. After breakfast, penetrate to modify
    6. Eat three fewer bites of your go
    7. Look after at one less hour of TV
    8. Absterge something thoroughly again a week.
    9. Stay until your stomach rumbles to come you reach pro subsistence
    10. Scent a banana, an apple, or a peppermint when you feel hungering
    11. Gawk at the color indecent
    12. Eat in honest of mirrors and you’ll worsted strain
    13. Splurge 10 minutes a time walking up...

  • Nicolidionix 2015.05.08 21:53 신고  댓글주소  수정/삭제  댓글쓰기

    [url=https://twitter.com/Healty_Pills]40 Fast, Comfortable Tips [/url]
    1. Erase down what you snack pro an individual week and you whim be deprived of mass
    2. Sum 10 percent to the amount of regular calories you assume you’re eating.
    3. Get an online heaviness drubbing buddy to lose more weight.
    4. Get a mantra
    5. After breakfast, penetrate to modify
    6. Consume three fewer bites of your refection
    7. Sit with a man less hour of TV
    8. Absterge something positively again a week.
    9. Stay until your stomach rumbles to come you reach benefit of rations
    10. Scent a banana, an apple, or a peppermint when you know desirous
    11. Gaze at the color blue
    12. Dine in honest of mirrors and you’ll escape strain
    13. Go through 10 minutes a time walking up...

질문이나 의견을 댓글로 달아 주세요

티스토리 툴바