본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] Activity 생명주기 관련된 고급정보들.

by 돼지왕 왕돼지 2012. 5. 17.
반응형


 http://developer.android.com/guide/topics/fundamentals/activities.html 

- Activity 가 stop 된 상태에서는 WindowManager 에서 detach 된 상태.

- system 이 메모리가 없어서 process를 죽일 때, onPause() 는 반드시 불리지만onStop() 이나 onDestory() 는 불린다는 보장이 없다. 따라서 onPause()에서 isFinish() 를 통해 해당 앱이 실제 종료되는건지, 잠시 pause 되는건지, 확인해주는 작업이 필요할 수 있다.

- onSaveInstanceState() 는 activity 종료전에 반드시 불리지 않을 수도 있다.를 들어 유저가 Back button 을 눌러서 나갈 때에는 상태유지가 필요가 없다. System 이 이 녀석을 부를때는 onStop() 전이나, onPause() 전에 부른다. 어떤 경우든 불린다는 보장이 없기 때문에 transient 정보를 저장하기에는 좋지만, permanent 한 정보를 저장하려면 반드시 call 이 보장되는 onPause() 에서 저장하는 것이 좋다.

- onCreate(). onStart(), onPause() 가 불리고 return 되는 순간까지는 killable 하지 않은 것이 정상이나, 완전 극악의 상황에서는 저것들도 불리지 않고, process 가 kill 될 수 있다.

- onPause() 나 onStop() 이 불렸을 때는 activity 의 상태가 보존된다.

- onSaveInstanceState() 의 기본동작은 Activity 에 있는 모든 View에 onSaveInstanceState() 를 불러준다. 이것이 정상 작동하기 위해서는 해당 widget ( view ) 가 unique 한 id 를 가지고 있어야 한다. ( android:id ) onRestoreInstanceState() 은 반대로 모든 view 의 onRestoreInstanceState() 를 호출하여 저장한 정보를 복구해준다. 참고로 onRestoreInstanceState() 가 하는 일을 onCreate 에서도 할 수 있다.

- android:saveEnabled 값을 false 로 두거나, setSaveEnabled( false ) 를 줌으로서, onSaveInstanceState() 가 작동하지 않도록 할 수도 있다.

- screen orientation 변환, keyboard availability 변환, language 변화 등의 경우에 Activity 의 onDestory() 가 불리고 바로, onCreate() 가 바로 불린다.






반응형

댓글