안드로이드 개발 자료 관리를 위한 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 |