|
안드로이드 개발 자료 관리를 위한 SharedPreferences 사용하는 방법 |
|
환경: Android Studio 3.0.0 |
안드로이드 앱에서 스마트폰에 값을 저장하고 싶을 때 DB 만 있는 것은 아닙니다. SQLite 에 값을 저장하기 위해서는 쿼리를 짜야 하고 테이블을 만들어야 합니다. 작업이 복잡합니다. 그래서 간단한 값 저장에는 SharedPreferences 를 사용하는 것이 좋습니다. 보통 초기 설정값이나 자동 로그인에 많이 사용하고 있습니다. SharedPreferences 에 저장한 데이터는 앱 전체에서 공유가 가능합니다.
▼ 먼저 SharedPreferences 인스턴스를 얻어야 합니다. 함수는 세 가지 입니다.
|
l getPreferences(int mode) : 하나의 Activity 에만 사용할 수 있습니다. 파일은 해당 Activity 이름으로 생성됩니다. l getSharedPreferences(String name, int mode) : 첫 번째 파라미터의 이름을 가진 SharedPreferences 를 생성합니다. 앱 전체에서 저장하고나 불러올 수 있습니다. l PerferenceManager.getDefaultSharedPreferences(Context context) : 환경 설정 액티비티에서 저장한 SharedPreferences의 데이터에 접근할 때 사용합니다. l mode 값 : MODE_PRIVATE(읽기/쓰기 가능), MODE_WORLD_READABLE(읽기 가능), MODE_WORLD_WRITEABLE(쓰기 가능) |
▼ 데이터를 저장하는 과정은 다음과 같습니다. SharedPreferences 인스턴스에서 저장을 위한 SharedPreferences.Editor 가져와야 합니다.
SharedPreferences sp = getSharedPreferences("shared", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putString("data", edtData.getText().toString());
editor.commit(); //완료한다.▼ 저장할 수 있는 데이터 타입과 함수는 다음과 같습니다. 배열은 putStringSet() 함수를 이용하면 되겠죠.
|
putBoolean(String key, boolean value) putFloat(String key, float value) putInt(String key, int value) putLong(String key, long value) putString(String key, String value) putStringSet(String key, Set<String> values) |
▼ 다음은 데이터를 불러오는 과정입니다. 저장한 데이터 타입에 맞게 함수를 호출해야 합니다. putInt() 로 저장했다면 getInt() 로 호출해야겠죠.
SharedPreferences sp = getSharedPreferences("shared", MODE_PRIVATE);
String data = sp.getString("data", "");
TextView tvData = (TextView)findViewById(R.id.tv_data);
tvData.setText(data);
▼ 데이터를 삭제하는 방법은 두 가지 입니다. clear() 함수를 이용해서 전체를 삭제하거나 remove() 로 특정 key 값에 해당하는 데이터만 삭제할 수 있습니다.
SharedPreferences sp = getSharedPreferences("shared", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.remove("data");
editor.commit();
SharedPreferences sp = getSharedPreferences("shared", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.clear();
editor.commit();
▼ 화면을 구현한 전체 Activity 소스 입니다.
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class SharedPreferencesActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shared_preferences);
}
protected void onSaveData(View v){
EditText edtData = (EditText)findViewById(R.id.edt_data);
SharedPreferences sp = getSharedPreferences("shared", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putString("data", edtData.getText().toString());
editor.commit(); //완료한다.
}
protected void onSearchData(View v){
SharedPreferences sp = getSharedPreferences("shared", MODE_PRIVATE);
String data = sp.getString("data", "");
TextView tvData = (TextView)findViewById(R.id.tv_data);
tvData.setText(data);
}
protected void onDeleteData(View v){
SharedPreferences sp = getSharedPreferences("shared", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.clear();
editor.commit();
}
}
▼ Activity 에 사용한 화면 레이아웃 입니다. 파일명은 activity_shared_preferences.xml 입니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="display.samsung.workplace.SharedPreferencesActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#84acd1"
android:layout_margin="5dp"
android:padding="5dp"
android:textColor="#FFFFFF"
android:text="저장할 자료"/>
<EditText
android:id="@+id/edt_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/btn_save"
android:text="자료 저장"
android:onClick="onSaveData"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#84acd1"
android:layout_margin="5dp"
android:padding="5dp"
android:textColor="#FFFFFF"
android:text="불러온 자료"/>
<TextView
android:id="@+id/tv_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:padding="5dp"/>
<Button
android:id="@+id/btn_search"
android:text="자료 불러오기"
android:onClick="onSearchData"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>'안드로이드 개발' 카테고리의 다른 글
| 안드로이드 개발 SharedPreferences 객체와 배열 저장을 위한 gson 사용하는 방법 (3) | 2018.04.13 |
|---|---|
| 안드로이드 개발 에뮬레이터 앱 db 조회 하는 방법 (0) | 2018.04.11 |
| 안드로이드 개발 Android GPS 정보 알아오기 (63) | 2018.04.07 |
| 안드로이드 콘솔에서 adb shell 에러 해결하는 방법 (0) | 2018.03.30 |
| 안드로이드 개발 DB 변경 결과 이후 작업을 위한 옵져버 ContentObserver 활용하는 방법 (0) | 2018.03.24 |
| 안드로이드 개발 전화번호 조회 퍼미션 에러 해결하는 방법 (0) | 2018.03.12 |
| 안드로이드 개발 SMS 조회 퍼미션 에러 해결하는 방법 (0) | 2018.03.07 |
| 안드로이드(Android) Debug 모드 상태 체크하는 방법 (0) | 2018.03.01 |
