보통 안드로이드 어플 내에 데이터를 저장하는 방식에는 여러 가지가 있는데
그중에서 가장 간단하게 쓰이는 방식이 SharedPreference입니다.
예제
public class MainActivity extends AppCompatActivity {
private final PREF_KEY = "PREF_KEY"; // 데이터를 저장할 키값
private SharedPreferences mPrefs; // 저장소의 변수
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 저장소 사용을 위한 사전 정의
mPrefs = getPreferences(MODE_PRIVATE);
int value = this.getPrefInt(PREF_KEY, -1);
value = value + 1;
this.setPrefInt(PREF_KEY, value);
}
// ================= Handle Data ======================= //
/**
* 저장 데이터 반환
*/
private int getPrefInt(String key, int defValue){
return mPrefs.getInt(key, defValue);
}
/**
* 데이터 저장
*/
private void setPrefInt(String key, int value){
SharedPreferences.Editor prefsEditor = mPrefs.edit();
prefsEditor.putInt(key, value);
prefsEditor.apply();
}
// ================= Handle Data ======================= //
}
설명
저 같은 경우에는 주로 메서드로 선언해서 쓰는 편인데요
1. 클래스내에서 SharedPreferences를 사용하기 위해 mPrefs라는 이름을 붙여 선언을 해줍니다.
2. onCreate (현재 Activity가 처음 생성될 때) mPrefs에 SharedPrefences로서의 기능을 작동하도록 생성해줍니다.
Tip 1. getPreferences()는 현재 호출한 Activity내에서만 작동합니다. 다른 Activity에서도 호출하기 위해서는 getSharedPreferences를 활용해야 합니다.
ex) mPrefs = this.getPreference(Activity.MODE_PRIVATE);
mPrefs = this.getSharedPreferences("공용Pref키", Context.MODE_PRIVATE);
Tip 2. MODE_PRIVATE는 Context내의 변수로 호출한 해당 애플리케이션과 연관된 부분에서만 사용할 수 있도록 제한하는 것을 의미한다. API Lev 1부터 존재하던 기능.
종류: MODE_APPEND / MODE_ENABLE_WRITE_AHEAD_LOGGING / MODE_MULTI_PROCESS / MODE_NO_LOCALIZED_COLLATORS / MODE_PRIVATE / MODE_WORLD_READABLE / MODE_WORLD_WRITABLE
일부 모드는 버전별로 Deprecated 되었으니 아래의 링크를 참조 바랍니다.
https://developer.android.com/reference/android/content/Context
3. 저는 getPrefInt와 setPrefInt로 생성해두고 재사용하는 걸 추천하는 편입니다. (어플 제작을 하다 보면 꽤 유용하니 한번 습관 들여두면 좋습니다.)
Android-SharedPreference
🇺🇸 English
2024.02.06 - [개발 창고/Android] - [Android] How to use SharedPreference
'개발 창고 > Android' 카테고리의 다른 글
[Android] ListView에 SimpleAdapter 적용하기 (0) | 2020.07.25 |
---|---|
[Android] ListView에 ArrayAdapter 적용하기 (0) | 2020.07.25 |
[Android] Thread 사용하기 (0) | 2020.07.23 |
[Android] Shape를 다중으로 사용하기 (0) | 2020.07.23 |
[Android] round box 만들기 (0) | 2020.07.23 |