Activity.Lifecycle
Activity란..• 가장 쉬운 이해는 "화면" 하나이다.o 사실은 Activity가 화면을 가질 수 있는 것이며, Activity는 화면 구성 외에 사용자 입력과 Event들을 접목 시키는 controller 역할을...
Activity 생명 주기 생명 주기에 대한 정확한 이해가 필수!대부분 개발과정에서 미세한 버그들은 이러한 생명 주기에 대한 고려가 없는 경우가 대부분입니다.게다가 생명 주기는 프로그래머가 강제할 수는 없습니다. 단지 ...
Activity 상태• 실행 (active, running)o 사용자가 현재 사용 중인 상태. 스택의 제일 위에 있으며, 화면 상에서도 제일 위에 있다. 입력 포커스를 가지며, 사용자 입력을 처리를 담당합니다.• 일시정...
처음 생성이 될 때. (생성 의미는 메모리에~)다른 Activity가 현재 Activity위에 잠시 떳다가 사라져서 원래 Activity가 보이는 경우에도 onResume다시 화면에 올라오는 경우는 대부분 여기서처리를 ...
onPauseonPause가 호출되면서 부터 Paused 상태가 된다는 것은.Killable status로 진입이 된다는 이야기입니다.이 시점 이후로는 시스템이 언제나 필요에 따라서 해당 Activity를별도 신호 없이...
onPause에 대해서 예제를 통한 추가 조사.A BCB.finish()A.finish()App 실행startActivity(B)startActivity(C)C.finish()각 단계에 대해서 lifecycle call...
onPause 실험 결과1. App 실행a. A onStartb. A onResume2. startActivity(B)a. A onPauseb. B onStartc. B onResumed. A onStop3. B.fin...
onPause 에 대한 에매한 부분에 대한 정의• onPause는 Activity가 stopped 상태로 전환하기 전에 무조건 호출이 된다.• Activity가 배경이 투명한 Activity가 뜨는 경우에는 기존 Act...
saveInstanceState액티비티의 상태를 저장 및 복원하는 콜백 메소드 onSaveInstanceState, onRestoreInstanceState
이건 한 번 해보고 가자1. Activity 하나에 각종 callback들을 재정의하고 Log를 남겨서 실제 언제 callback이 수행이 되는 가를 확인하자.2. Activity를 두개를 만들어서a. 첫 번째 Acti...
Upcoming SlideShare
Loading in …5
×

02 activity.lifecycle

534 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
534
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

02 activity.lifecycle

  1. 1. Activity.Lifecycle
  2. 2. Activity란..• 가장 쉬운 이해는 "화면" 하나이다.o 사실은 Activity가 화면을 가질 수 있는 것이며, Activity는 화면 구성 외에 사용자 입력과 Event들을 접목 시키는 controller 역할을 많이 한다.o 화면을 가지지 않는 Activity는 어찌 보면 Service라고 볼 수도 있지만, 의외로 화면 밝기 조정을 위한 Activity와 같이 화면을 가지지 않는 Activity들이 있습니다. 또는 다운로드를 잠시하면서 화면을 얼려두고 싶은 경우와 같은 경우가 있을 수 있습니다. 이와 같은 추가적인 사용 예는 구글에서 "android activity no UI"로 검색하면 찾으실 수 있습니다.• 프로그램은 한 화면에서 모든 동작이 수행이 힘들기 때문에 여러 Activity로구성이 되고 이들 간에는 서로 통신을 해야 합니다.• Activity들은 자체적인 Lifecycle을 가지고 있으며, 각 단계에 대한 callback을지정해서 원하는 동작을 취하게 할 수 있습니다.
  3. 3. Activity 생명 주기 생명 주기에 대한 정확한 이해가 필수!대부분 개발과정에서 미세한 버그들은 이러한 생명 주기에 대한 고려가 없는 경우가 대부분입니다.게다가 생명 주기는 프로그래머가 강제할 수는 없습니다. 단지 요청을 할 뿐. 실제 모든생명 주기 관할은 Android OS 수준에서 일어납니다(수행이 됩니다.).이는 다시 이야기 하면, 프로그래머가 원하지 않는 시점에도 생명이 마쳐질 수 있는 상황이 있다는 사실 입니다.대표적인 경우가 메모리가 부족한 경우입니다.위 생명 주기를 자세히 보기 전에Activity 상태에 대해서 먼저 살펴 봅니다.
  4. 4. Activity 상태• 실행 (active, running)o 사용자가 현재 사용 중인 상태. 스택의 제일 위에 있으며, 화면 상에서도 제일 위에 있다. 입력 포커스를 가지며, 사용자 입력을 처리를 담당합니다.• 일시정지 (pause)o 포커스는 잃었지만 사용자에게는 보이는 상태. 위쪽에 다른 Activity가있지만 화면 전체를 가리지는 않고 반투명 상태가 이에 해당. 살아는 있지만, 경우에 따라서 시스템에 강제 종료 가능 상태.• 정지 (stopped)o 다른 Activity에 의해서 완전히 가려진 상태, 사용자 눈에 보이지 않습니다. 그러나 메모리 상에 기존 상태를 유지하고 있어서, 필요에 따라서다시 활성화 되어 화면에 나타날 수 있습니다. 물론 이 상태도 시스템에의해서 강제 종료 가능합니다.
  5. 5. 처음 생성이 될 때. (생성 의미는 메모리에~)다른 Activity가 현재 Activity위에 잠시 떳다가 사라져서 원래 Activity가 보이는 경우에도 onResume다시 화면에 올라오는 경우는 대부분 여기서처리를 하는 것이 대부분.onStart 보다는 onResume을 많이 활용.onCreateonResumeonPause습관적으로 고민을 해야 하는 callbackkillable status
  6. 6. onPauseonPause가 호출되면서 부터 Paused 상태가 된다는 것은.Killable status로 진입이 된다는 이야기입니다.이 시점 이후로는 시스템이 언제나 필요에 따라서 해당 Activity를별도 신호 없이 메모리에서 소멸 시켜 버릴 수 있다는 이야기 입니다.여기서 별도 신호가 없다는 이야기는 onStop, onDestroy가 호출이 되지 않는다는 이야기가 됩니다.즉 onPause는 생명주기의 마지막 보장된 정리 타임이라고 할 수있습니다. 그렇기에 우리는 이 부분에서 해당 Activity에 대한 정리를 열심히 해야 합니다.
  7. 7. onPause에 대해서 예제를 통한 추가 조사.A BCB.finish()A.finish()App 실행startActivity(B)startActivity(C)C.finish()각 단계에 대해서 lifecycle callback 로그 남김아래 순서에 따라서 동작을 수행하고 로그를 추적1. App 실행2. startActivity(B)3. B.finish()4. startActivity(C)5. C.finish()6. A.finish()여기서 B는 일반 Activity. C는 배경이 투명인Activity* 배경 투명 Activity는 android:theme="@android:style/Theme.Translucent.NoTitleBar" 설정 통해서 간단 지정 가능
  8. 8. onPause 실험 결과1. App 실행a. A onStartb. A onResume2. startActivity(B)a. A onPauseb. B onStartc. B onResumed. A onStop3. B.finish()a. B onPauseb. A onRestartc. A onStartd. A onResumee. B onStopf. B onDestroy4. startActivity(C)a. A onPauseb. C onStartc. C onResume5. C.finish()a. C onPauseb. A onResumec. C onStopd. C onDestroy6. A.finish()a. A onPauseb. A onStopc. A onDestroy
  9. 9. onPause 에 대한 에매한 부분에 대한 정의• onPause는 Activity가 stopped 상태로 전환하기 전에 무조건 호출이 된다.• Activity가 배경이 투명한 Activity가 뜨는 경우에는 기존 Activity는 onPause 상태가 유지가 됩니다.o 여기서 배경이 투명한 Activity라고 함은 Dialog는 절대 아님을 명심합니다.o 투명한 Activity 때문에 onPause에서 onStop으로 이동하지않고, onStop에 머물러 있는 상태가 유지 됩니다.• onPause 구현은 가능한 빠르게 실행되도록 합니다. 새로 올라오는 화면의 onStart/onResume이 전 화면의 onPause가 마쳐져야시작되기 때문입니다.
  10. 10. saveInstanceState액티비티의 상태를 저장 및 복원하는 콜백 메소드 onSaveInstanceState, onRestoreInstanceState
  11. 11. 이건 한 번 해보고 가자1. Activity 하나에 각종 callback들을 재정의하고 Log를 남겨서 실제 언제 callback이 수행이 되는 가를 확인하자.2. Activity를 두개를 만들어서a. 첫 번째 Activity에서 버튼 클릭해서 두번째 Activity를생성을 하자.b. 두 번째 Activity에서 닫기 버튼을 만들어서 다시 원래Activity로 돌아오자.c. 두 Activity 모두에 callback들을 정의해서, 언제 호출이 일어나는 가를 확인하자.

×