- onPause() 콜백 메서드는 액티비티가 background로 가려고하는 상태이다.
- 실행중이던 계산이나 애니메이션을 꼭 중단하도록 구현해야 한다.
- onPause() 콜백 메서드가 return 되어야 새 액티비티가 활성화될 수 있으므로,
Android SDK는 foreground 액티비티를 만들기 전에 이 콜백이 return하는 것을 기다린다.
- onPause()가 호출된 이후를 Killable 상태라 하는데, 이는 시스템이 언제든지 액티비티를 강제 종료할 수 있다는 뜻이다.
강제 종료된 프로그램은 onStop()과 onDestroy()가 호출되지 않으므로,
onPause()가 호출된다고 보장되는 최후의 메서드인 것이고, 프로세스가 완전히 되찾아진다.
그래서 영구적인 data를 파일에 저장할 수 있는 마지막 기회이다.
- View 객체만 가졌다면, 저장할 필요가 없다.
액티비티가 자동으로 View를 저장하고 있기 때문이다.
[Why] onSaveInstanceState(Bundle) or onRestoreInstanceState(Bundle) 메서드는
일시적인 data를 저장하기에 적합하다.
- 안드로이드 시스템에의해 destroy된 후에, 액티비티 객체를 이전과 똑같이 recreate하고 싶을 때 필요한 메서드이다.
memory에 머무르기에는 back stack에서 너무 멀리 떨어져있기 때문이다.
- 시스템은 액티비티를 중지시키기 전에 onSaveInstanceState()를 호출한다.
- onSaveInstanceState(Bundle)는 lifecycle 콜백이 아니기때문에, 액티비티 lifecycle의 어떤 상황에서라도 호출되지 않을 것이다.
그러므로 View 객체가 아닌, 저장하거나 복구시킬 data는 onPause()와 onResume()에 두어야 한다.
즉, View 객체만 가졌다면 저장할 필요가 없다는 것을 알 수 있다.
'Android' 카테고리의 다른 글
repeat (0) | 2016.03.02 |
---|---|
같은 프로젝트로 두 앱 동시에 띄우기 (0) | 2015.09.30 |
Windows에서 git이랑 연결하기 (0) | 2015.07.13 |
[Thread/Service/Broadcast] 5초마다 Toast 띄우기 (0) | 2015.07.02 |
Fragment를 호스팅하는 Activity (0) | 2015.06.30 |