SharedPreferences

ha_jni·2021년 8월 9일
0

int, float, String, boolean 등 간단한 데이터를 저장하고 불러올 수 있다.
앱을 꺼도 데이터가 유지된다는 점에서 간편한 데이터베이스 역할을 할 수 있다.
DB(데이터베이스)를 사용하기 부담스러운 경우, 간단하게 SharedPreferences를 사용할 수 있다.

하지만 저장할 수 있는 데이터타입에 제약이 있다. 배열이나 객체를 저장하지 못한다.

SharedPreferences특징

  • SharedPreferences 는 간단한 데이터를 앱의 개별 저장소에 xml파일로 저장
  • SharedPreferences 객체를 생성할 때 파일 이름을 인자로 전달하며, 그 이름으로 xml파일이 생성됨
  • 데이터를 저장할 때는 key/value 형태로 저장
  • 저장경로는 data/data/패키지명/shared_prefs/SharedPreference명.xml 에 저장
  • 데이터는 App의 개별 데이터 저장소에 저장되기 때문에 다른 App과 공유할 수 없음
  • SharedPreferences는 put/get 메소드를 제공하여 데이터를 저장하거나 읽을 수 있음

SharedPreferences 사용 과정

**1. 변수 선언 및 초기화**

// 변수선언
SharedPreferences pref;
SharedPreferences.Editor editor;

// 초기화
pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
editor = pref.edit();

**2. 초기값 지정 및 저장값 불러오기**

// (어떤 이름으로 저장하고 불러올지, 저장값이 없을 때 불러올 값)
pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
pref.getInt("MyInt01", 0);

**3. 원하는 값 저장하기**

// MyInt01에 10을 저장한다고 가정하면
pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
editor.putInt("MyInt01", 10);
editor.apply();
 
*editor.apply();를 해야만 저장이 실행된다.

4. 삭제하기
pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.remove("MyInt01"); 
editor.apply();

예제

public class MainActivity extends AppCompatActivity {
 
    SharedPreferences pref;          // 프리퍼런스
    SharedPreferences.Editor editor; // 에디터
 
    int myInt;                      // 숫자 변수
    String myStr;                   // 문자 변수
 
    EditText et01, et02;            // 레이아웃 변수 EditText
    Button btn01, btn02;            // 레이아웃 변수 Button
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        // 1. Shared Preference 초기화
        pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
        editor = pref.edit();
 
        // 2. 저장해둔 값 불러오기 ("식별값", 초기값) -> 식별값과 초기값은 직접 원하는 이름과 값으로 작성.
        myInt = pref.getInt("MyInt", 0);        // int 불러오기 (저장해둔 값 없으면 초기값인 0으로 불러옴)
        myStr = pref.getString("MyStr", "_");   // String 불러오기 (저장해둔 값 없으면 초기값인 _으로 불러옴)
 
 
        // 3. 레이아웃 변수 초기화
        et01 = findViewById(R.id.et01); et02 = findViewById(R.id.et02);
        btn01 = findViewById(R.id.btn01); btn02 = findViewById(R.id.btn02);
 
        // 4. 앱을 새로 켜면 이전에 저장해둔 값이 표시됨
        et01.setText(String.valueOf(myInt)); et02.setText(myStr);
 
 
        // 5. 각 버튼 클릭시 새로운 값 저장
        btn01.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                myInt = Integer.parseInt(et01.getText().toString()); // int Max값 넘게 입력하면 오류 주의.
                editor.putInt("MyInt", myInt);
                editor.apply(); // 저장
            }
        });
        btn02.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                myStr = et02.getText().toString();
                editor.putString("MyStr", myStr);
                editor.apply(); // 저장
            }
        });
    }
}

0개의 댓글