Android

[Android] SharedPreference; 데이터 임시 저장

Jintiago 2022. 3. 12. 21:31

앱을 종료하더라도 앱 사용하며 발생한 저장되어야 할 데이터가 남아있도록 하는 것이다.

앱 설정 창에 많이 쓰인다. 설정 값은 앱 종료 후에도 저장되어 있어야 하기 때문이다.

단, 임시저장이기 때문에 앱을 삭제할 경우 저장된 데이터도 함께 삭제된다.

 

이번에는 앱에서 EditText 상 입력한 문자가 앱 종료 후 재실행 후에도 남아 있도록 하는 예제를 만들어 보았다.

 

xml에는 EditText만 넣어두고 id를 et_save로 지정해 두었다.

 

MainActivity.java

package com.example.sharedpreference;

import androidx.appcompat.app.AppCompatActivity;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    EditText et_save;
    String shared = "file";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        et_save = (EditText) findViewById(R.id.et_save); //xml의 id java로 연결

        // 2. 시작 시 불러오기 구문
        SharedPreferences sharedPreferences = getSharedPreferences(shared,0);
        String value = sharedPreferences.getString("hong", ""); // 저장된 값 가져올 것이기에 value는 빈칸
        et_save.setText(value); //value에 있는 string 값을 setText
    }

    // 1. 종료 시 저장 구문
    @Override
    protected void onDestroy() { // activity가 종료(destroy)될 때 호출
        super.onDestroy();

        SharedPreferences sharedPreferences = getSharedPreferences(shared, 0);
        SharedPreferences.Editor editor = sharedPreferences.edit();// SharedPreference에 editor 연결
        String value = et_save.getText().toString(); // EditText 에 입력된 문자 가져옴
        editor.putString("hong", value); // 받아온 값 에디터에 넣어주기. hong 이라는 이름으로 value 값을 저장할거야
        editor.commit(); // 저장을 완료해라
    }   //
}