[Android] 생명주기 고급정보!

2014. 12. 27. 20:53Basic/etc

반응형


- 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() 가 바로 불린다.


출처 : http://aroundck.tistory.com/715

반응형

'Basic > etc' 카테고리의 다른 글

[개발자 상식]TDD(테스트 주도적 개발)  (0) 2015.03.01
JAVA언어 이름 규칙  (0) 2015.01.12
[Android] ART???  (0) 2014.12.27
[Android] Content Provider  (0) 2014.12.27
[Android] 무결성을 위한 앱 설계시 고려할 사항들  (0) 2014.12.27