앞서 다뤄봤듯이, 액티비티는 고유의 생애주기를 가지고 있습니다.
그런데... 아래에서 다뤘던 생애주기들은 모두 Orientation(방향)이 변하는 것은 가정하고 있지 않습니다.
방향이 변하는데 액티비티랑 뭔 상관이냐구요? 네. 엄청난 영향을 미칩니다. :)
단말기의 방향만 바뀌어도, 액티비티는 바람에 흔들리는 갈대마냥 엄청난 변화를 맞게 됩니다.
방향이 바뀌면, 액티비티는 소멸되었다가 다시 생성되게 됩니다.
아래의 예를 보시죠. 아래는 '+' 버튼을 누르면 새로 버튼들이 추가되도록 구성되어있습니다.
그런데, 이 상태에서 단말기를 돌려 Landscape 모드로 바뀌게 되면...
위와 같이 아까 추가되었던 View들은 온데간데 없이 사라지게 됩니다. -_-;;
액티비티가 소멸되었다가 다시 생성되면서, 기본 레이아웃 상태로 바뀌게 되는 것이죠. :)
하지만, EditText에 입력한 텍스트들은 그대로 남아있는데, 이는 onSaveInstanceState() / onRestoreInstanceState() 메소드가 호출되면서 현재의 액티비티 상태를 저장하기 때문입니다.
기본으로 저장해주는 것들 외에 Orientation이 변할 때 저장해야 할 것들의 처리는 onSaveInstanceState / onRestoreInstanceState 메소드에서 처리해 주시면 됩니다.
정리하면... 액티비티의 Orientation이 변할 때, 액티비티의 생애주기 메소드 호출 순서는 아래와 같습니다.
onSaveInstanceState() // 액티비티 상태 저장
onPause()
onStop()
onDestroy()
onCreate()
onStart()
onRestoreInstanceState() // 액티비티 상태 복구
onResume()
onPause()
onStop()
onDestroy()
onCreate()
onStart()
onRestoreInstanceState() // 액티비티 상태 복구
onResume()
'어플리케이션 구성 > 액티비티(Activity)' 카테고리의 다른 글
방향변화에 대처하는 액티비티의 자세 Part.2 (부제 : 준비된 자만이 살아남는다) (0) | 2009.12.10 |
---|---|
액티비티 생애주기, 눈으로 확인하자! (19) | 2009.10.11 |
액티비티와 태스크(Task) (6) | 2009.09.20 |
액티비티의 생애주기(Lifecycle) (13) | 2009.09.18 |
이클립스에서 안드로이드 액티비티 추가하기 (16) | 2009.03.01 |