작성한 부스트코스 후기입니다.
여러분들의 성원에 더 노력하는 부스트코스가 되겠습니다.
감사합니다.
******************************************
1)링크: https://blog.naver.com/dusdkfla/221812455563
2)작성날짜: 20/02/13
안녕하세요~
이번엔 안드로이드 생명주기(수명주기)에 대해 포스팅해보려 합니다.
액티비티는 안드로이드 시스템에 관리되기 때문에 언제라도 중지되거나 메모리에서 삭제될 수 있습니다.
예를 들어, 전화가 오는 경우 통화를 우선으로 처리해야 하기 때문에 메모리가 모자란다면 여러분의 앱을 임의로 종료시킬 수 있습니다.
그런데 이럴 때 아무런 예고 없이 앱을 종료시키면 사용자가 입력했던 데이터나 앱의 상태는 모두 사라지고 말 겁니다.
수명주기는 앱의 상태에 맞추어 여러분이 어떤 기능을 동작시키는 코드를 넣을 수 있도록 해 줍니다.
수명주기는 화면의 상태에 따라 달라지는데 각각의 상태에 따라 자동으로 호출되는 메소드가 다릅니다.
생명주기(LifeCycle)
일단 액티비티의 상태는 3가지가 있습니다.
실행(Running) - 화면 상에 액티비티가 보이면서 실행되어 있는 상태. 액티비티 스택의 최상위에 있으며 포커스를 가지고 있음
일시 중지(Paused) - 사용자에게 보이기는 하지만 다른 액티비티가 위에 있어 포커스를 받지 못하는 상태. 대화상자가 위에 있어 일부가 가려져 있는 경우에 해당함
중지(Stopped) - 다른 액티비티에 의해 완전히 가려져 보이지 않는 상태
액티비티의 상태들의 흐름을 그림으로 봅시다.
오른쪽 그림이 왼쪽 그림의 조금 더 자세한 그림입니다.
위 그림들을 요약하자면,
화면이 눈에 보이게 되는 과정에서 onCreate, onStart, onResume 메소드가 차례대로 호출되고,
화면이 없어지는 과정에서 onPause, onStop, onDestroy 메소드가 호출됩니다.
데이터의 복구
onPause() 메소드는 액티비티가 눈에 보이지 않게 될 때 항상 호출되므로 이 메소드에서 정보를 저장하는 방법을 구현할 수 있습니다.
SharedPreferences 객체에 name이라는 이름으로 "소녀시대"라는 정보를 저장했습니다.
반대로 onResume() 메소드는 액티비티가 눈에 보이게 될 때 항상 호출되므로 이 메소드 안에 정보를 불러오는 코드를 작성하면 액티비티를 닫을 때 저장한 정보를 다시 불러올 수 있습니다.
이 방법 이외에도 onSaveInstanceState 메소드와 onRestoreInstanceState 메소드를 사용하는 방법도 있습니다.
액티비티가 중지되기 전에 onSaveInstanceState 메소드가 호출되는데 이 안에서 임시로 데이터를 저장할 수 있습니다.
저장할 때는 번들 객체를 만들어 저장하는데, 이 번들 객체는 액티비티가 다시 만들어질 때 호출되는 onCreate나 화면에 다시 보일 때 호출되는 onRestoreInstanceState 메소드의 파라미터로 전달됩니다.
따라서 파라미터로 전달된 번들 객체의 데이터를 이용하면 화면에 원래의 데이터를 복구할 수 있습니다.
[출처] [부스트코스]안드로이드 - 생명주기(LifeCycle)|작성자 리미