반응형
onSaveInstanceState 이게뭐임?
안드로이드 액티비티는 다양하게 종료될 수 있음. 예를들어 스마트폰의 메모리가 부족할경우 안드로이드는 실행되고있는 앱들을 죽이기 시작함. 이때 앱이 죽기전에 엉엉 울면서 onSaveInstanceState라는 메소드에 자신의 유산을 남기고 죽을 수 있음.
어케씀?
1. 액티비티 클래스에 onSaveInstanceState 를 오버라이딩 하셈
2. 남기고 싶은 데이터를 key, value 쌍으로 Bundle에 저장한다
3. 액티비티 onCreate때 onSaveInstanceState 에서 key값으로 유산을 찾으면 됨
예제좀
- 다음예제는 앱이 죽기전에 사랑했던 물고기의 이름을 남기는 예제이다
- 앱은 죽기전에 "내가 사랑했던 물고기" 라는 key값과 "붕어"라는 value를 Bundle에 putString 메소드로 저장한다
- 앱이 onCreate될때 savedInstanceState값이 null이면 앱이 최초실행된 것이고 null이 아니면 앱이 환생한것
- 앱은 환생한 후 그가 죽기전에 사랑했던 물고기의 이름을 savedInstanceState에 "내가 사랑했던 물고기" 라는 key값으로 그녀의 이름을 찾는다
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Log.i(TAG, "태어났다");
if (savedInstanceState == null) {
Log.i(TAG, "인생은 처음임");
} else {
Log.i(TAG, "환생했음");
String herName = savedInstanceState.getString("내가 사랑했던 물고기");
Log.i(TAG,"내가 사랑했던 물고기의 이름은... " + herName);
}
}
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
Log.i(TAG, "나는 붕어를 사랑했어... 다시태어나도 만날 수 있을까");
outState.putString("내가 사랑했던 물고기", "붕어");
}
}
반응형
'Android > 안드로이드 기본지식' 카테고리의 다른 글
[Android] Task와 back stack (0) | 2022.02.17 |
---|---|
안드로이드 inflate, inflater란? (0) | 2021.07.19 |
안드로이드 ViewModel 사용하기 (0) | 2021.07.08 |
안드로이드 LiveData 기본예제 (2) | 2021.07.01 |
안드로이드 Fragment 사용하기 (0) | 2021.06.30 |
댓글