Android(Java) - SharedPreferences - 공유 저장소(저장 장치)에 데이터 저장하기

반응형

 

SharedPreferences

객체는 키-값 쌍이 포함된 파일을 읽고 쓸 수 있는 메서드

파일은 프레임워크에서 관리하며 비공개이거나 공유


공유 환경설정의 핸들 호출

getSharedPreferences()

  • 이름으로 식별되는 공유 환경설정 파일이 여러개 필요한 경우 사용
  • 앱의 모든 Context에서 이 메서드를 호출
  • 이름은 첫번째 매개변수로 지정

getPreferences()

  • 활동에 공유 환경설정 파일이 하나만 필요한 경우 사용
  • Activity에서 메서드 호출
  • Activity에 속한 기본 공유 환경설정 파일을 검색하기 때문에 이름을 정의 할 필요가 없음

공유 환경설정에 쓰기 (데이터 저장)

  • 공유 환경설정 파일에 데이터를 저장하려면 edit()를 호출하여 SharedPreferences.Editor를 생성
  • putString(), putInt() 와 같은 메서드를 사용하여 키와 밸류 정의
  • apply(), commit() 메서드를 호출하여 데이터 저장
// MyData는 이름으로 식별되는 공유 환경설정 파일, 비공개 모드로 생성
SharedPreferences sp = getSharedPreferences("MyData", MODE_PRIVATE);
// 에디터 생성
SharedPreferences.Editor editor = sp.edit();
// 키와 밸류 정의
editor.putString("stringData", data); // String data = "Hello";
// 공유 저장소에 데이터 저장
editor.apply();

공유 환경설정에서 읽기 (데이터 불러오기)

  • getString(), getInt() 와 같은 메서드를 사용하여 데이터 호출
  • 첫번째 파라미터 : 키
  • 두번째 파라미터 : 키가 존재하지 않을 때 반환할 디폴트 값
// 저장된 MyData 공유 환경설정 파일 호출
SharedPreferences sp = getSharedPreferences("MyData", MODE_PRIVATE);
// 저장된 데이터 불러오기, 키가 없을 경우 X 값 저장
String savedData = sp.getString("stringData", "X");

공유 환경설정에서 지우기 (데이터 지우기)

  • edit()를 호출하여 SharedPreferences.Editor를 생성
  • edit.clear() 메소드를 이용하여 지정한 환경설정 파일의 데이터 삭제
// 저장된 MyData 공유 환경설정 파일 호출
SharedPreferences sp = getSharedPreferences("MyData", MODE_PRIVATE);
// 에디터 생성
SharedPreferences.Editor editor = sp.edit();
// MyData에 저장된 데이터 삭제
editor.clear();

공유 저장소에 데이터를 저장하고 불러오는 앱 구현하기 (Android Stduio)

기능 설계

  • 저장 버튼을 누르면 "문자열"이라고 적힌 텍스트뷰의 값을 공유 저장소에 저장
  • 불러오기 버튼을 누르면 공유 저장소에 저장된 "문자열" 데이터 텍스트뷰에 출력

 

레이아웃 UI 설계

  • btnPut : 저장 버튼
  • textPutString : "문자열" 로 설정된 텍스트뷰
  • btnGet : 불러오기 버튼
  • textGetString : 공유 저장소에 저장된 데이터를 불러와서 출력 할 텍스트뷰


소스 코드

public class MainActivity extends AppCompatActivity {

    Button btnPut, btnGet;
    TextView textPutString, textGetString;

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

        btnPut = findViewById(R.id.btnPut);
        btnGet = findViewById(R.id.btnGet);
        textPutString = findViewById(R.id.textPutString);
        textGetString = findViewById(R.id.textGetString);

        btnPut.setOnClickListener(view -> {
            // SharedPreferences를 이용해서 애플리케이션 내의 저장소에 영구 저장하는 방법
            // 애플리케이션을 삭제하기 전까지는 영구적으로 저장되지만, 삭제시 같이 삭제된다.
            SharedPreferences sp = getSharedPreferences("MyData", MODE_PRIVATE);
            SharedPreferences.Editor editor = sp.edit();
            
            String data = textPutString.getText().toString();
            
            editor.putString("stringData", data);
            editor.apply();
        });

        btnGet.setOnClickListener(view -> {
            // SharedPreferences에서 데이터를 가져오는 방법
            SharedPreferences sp = getSharedPreferences("MyData", MODE_PRIVATE);
            String savedData = sp.getString("stringData", "X");

            textGetString.setText(savedData);
        });
    }
}

실행 화면

  • 저장 버튼을 누르고 불러오기를 누른 화면

반응형