어제 공부한 액티비티 생명주기에 이어서 보자~
어제 보았던 생명주기에서 퍼지상태가 Pause 상태가 되면 잠시정지 상태가 된다고 배웠다
그때에 너무 많은 메모리를 사용할경우 지금 사용하는 액티비티가 더 중요하기 때문에 뒤로 Pause상태인 액티비티의 데이터가 손상될수 있기 때문에 그것을 방지하고자 데이터를 따로 저장 해줄수 있다
그게 바로 아래의 코드 이다
데이터 저장하는 메소드
public void saveData(){ // 데이터를 저장하는 메소드 읽기전용인지 읽고쓰고 다른곳에서도 사용할것인지
SharedPreferences sharedPreferences = getSharedPreferences("pref" , MODE_PRIVATE); // 데이터 저장하는것
SharedPreferences.Editor editor = sharedPreferences.edit(); // 이 앱에서만 사용할것인지
editor.putInt("Score" , 10000);
editor.putString("msg", "나는데이터"); // 번들형 키와 값
editor.commit(); // 완료했다는 것!
// 이 메소드 호출 시점에 비정상적인 종료가 되어도 저장이 된다
}
private void restoreData(){ //확인을위한 메소드
Toast.makeText(getApplicationContext(),"읽어온 점수" + score , Toast.LENGTH_LONG).show();
//확인을 위한 토스트 메시지
}
MODE_WORLD_READABLE : 다른프로젝트에서 읽기만 사용가능
MODE_WORLD_WRITEABLE : 다른프로젝트에서 읽고 쓰기 사용가능
MODE_PRIVATE : 현재의 액티비티 안에서 만사용하기
생명주기에 메소드 호출하여 저장과 가져오기
@Override
protected void onResume() {
super.onResume();
Log.i("LifeCycle", "onResume 호출됨");
SharedPreferences sharedPreferences = getSharedPreferences("pref" , MODE_PRIVATE);
score =sharedPreferences.getInt("Score" , 0); // 데이터 불러오기
if (score != 0 ) {restoreData();}
}
@Override
protected void onPause() {
super.onPause();
Log.i("LifeCycle", "onPause 호출됨");
saveData();
}
근데 이렇게만하면 다시 켰을때 값이 남아 있을수 있다 그래서 초기화 시켜줄수도 있는데 Destroy 이렇게 초기하 시켜줌
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("LifeCycle", "onDestroy 호출됨");
SharedPreferences sharedPreferences = getSharedPreferences("pref" , MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.commit(); // 값을 초기화 하는 것
}
이렇게 해주면 프로그램이 끝낫을때 값이 초기화 되는걸 볼수있다!
혹은 이렇게도 할수 있다 onSvaeInstanceState() , onRestoreInstanceState();
onSvaeInstanceState()를 오버라이딩 해서 값을 저장 한다
불러올때는 2가지 방법이 있는데 onCreate에서 불러오기 혹은
onRestoreInstanceState(); 오버라이딩해서 값을 불러올수 있다
(현재 이상하게 코드상에 문제가 없지만 작동을 안한다 그전까지는 위에꺼 사용해야할거 같다 )
한눈에 보는 액티비티 생명주기
2021-03-15 ( 복습 1회)
'아옳옳의 코딩공부 > 아옳옳의 안드로이드스튜디오' 카테고리의 다른 글
2021-03-16 안드로이드 스튜디오( 태스크2) (0) | 2021.03.16 |
---|---|
2021-03-15 안드로이드 스튜디오( 태스크) (0) | 2021.03.15 |
2021-03-10 안드로이드 스튜디오 (매니패스트에 대하여) (0) | 2021.03.10 |
2021-03-10 안드로이드 스튜디오 (액티비티 생명주기1) (0) | 2021.03.10 |
2021-03-09 안드로이드 스튜디오 (암시적인텐트 사용하기) (0) | 2021.03.09 |