SlideShare a Scribd company logo
1 of 7
Activity.finish
Activity.finish
의외로 다양하다?!
결론은 현재 Activity를 닫는다는 이야기.
가장 흔한 실수.
finish하면 끝일 것이라는 생각.
finish 호출이 되면 여기서 프로그램 flow가 마쳐질 것이라
예상하는 경우가 많습니다.
그래서 SummarizeCurrentEvent는 finish 호출 뒤에 수행이
되지 않을 것이라 생각을 합니다.
결론은 그렇지 않습니다.
만약 finish 후 flow를 마치고자 하면 return을 명시하세요.
finish()에 대해서
안드로이드 시스템에
이 Activity를 마칠 준비를 진행
시켜서 마쳐주라고
이야기를 할 뿐.
실제 수행 시점은
시스템이 결정.
미완성 결론
Activity.finish는 바로 해당 Activity를 종료시키는 exit와 같은 신호가 아닙니다.
안드로이드 시스템에게 본 Activity에 대해서 사용자가 제어권이 풀리는 시점 (주어진 작업을 마
치는 시점)에 종료를 위한 준비를 진행하라고 신호를 주는 것입니다.
그러고 나면, 시스템은 해당 finish가 호출되는 시점에 현재 진행 예약 중인 작업들을 마친 뒤에
종료 준비 작업을 할 수 있도록 처리를 합니다. 이 처리라고 하는 부분은 메모리 GC 대상으로 표
시를 하는 것까지 포함되는 것 같습니다. 그리고 이 신호는 Activity 내 message queue에 종료
신호를 등록하는 형태로 처리되는 것으로 예상됩니다.
그리고 실제로 메모리에서 지워지는 것은 언제인지는 보장은 못 합니다. 이건 전능한 안드로이
드 시스템이 알아서 진행할 것입니다.
이번 결론은 내부 소스 코드를 보지 못해서, 현재까지 통용되고 있는 데이터들을 바탕으로 추측한
결과입니다. 이에 따라서 본 결론에 대한 신빙성은 추가적으로 검증 되어야 합니다.
참고 자료
• http://stackoverflow.com/questions/4924071/calling-finish-on-an-
android-activity-doesnt-actually-finish
• http://stackoverflow.com/questions/2590947/about-finish-in-
android
• http://blog.naver.com/PostView.nhn?blogId=asiakth&logNo=1101
34773300
• http://stackoverflow.com/questions/10847526/what-exactly-
activity-finish-method-is-doing
• http://www.edumobile.org/android/android-programming-
tutorials/difference-between-kill-activity-and-finish-activity/
• https://groups.google.com/forum/?fromgroups=#!topic/android-
developers/Y96KnN_6RqM

More Related Content

More from 운용 최

Wot(daliworks) 20131113
Wot(daliworks) 20131113Wot(daliworks) 20131113
Wot(daliworks) 20131113운용 최
 
NIPA SW Insight Report '13.08
NIPA SW Insight Report '13.08NIPA SW Insight Report '13.08
NIPA SW Insight Report '13.08운용 최
 
Agile Spirit Base On The Book "Agile Samuari"
Agile Spirit Base On The Book "Agile Samuari"Agile Spirit Base On The Book "Agile Samuari"
Agile Spirit Base On The Book "Agile Samuari"운용 최
 
21 application and_network_status
21 application and_network_status21 application and_network_status
21 application and_network_status운용 최
 
20 handler and_async_task
20 handler and_async_task20 handler and_async_task
20 handler and_async_task운용 최
 
18 안드로이드 리스트뷰_속도향상
18 안드로이드 리스트뷰_속도향상18 안드로이드 리스트뷰_속도향상
18 안드로이드 리스트뷰_속도향상운용 최
 
19 나만의 view 만들기
19 나만의 view 만들기19 나만의 view 만들기
19 나만의 view 만들기운용 최
 
17 adapter view & db
17 adapter view & db17 adapter view & db
17 adapter view & db운용 최
 
16 데이터 저장과 사용
16 데이터 저장과 사용16 데이터 저장과 사용
16 데이터 저장과 사용운용 최
 
15 content provider
15 content provider15 content provider
15 content provider운용 최
 
14 broad castreceiver
14 broad castreceiver14 broad castreceiver
14 broad castreceiver운용 최
 
13 service 좀더
13 service 좀더13 service 좀더
13 service 좀더운용 최
 
11 tablet 대응 가이드
11 tablet 대응 가이드11 tablet 대응 가이드
11 tablet 대응 가이드운용 최
 
10 view orientation_change
10 view orientation_change10 view orientation_change
10 view orientation_change운용 최
 
09 android keyboard & layout
09 android keyboard & layout09 android keyboard & layout
09 android keyboard & layout운용 최
 
08 fragment 태블릿 대응
08 fragment   태블릿 대응08 fragment   태블릿 대응
08 fragment 태블릿 대응운용 최
 

More from 운용 최 (20)

Wot(daliworks) 20131113
Wot(daliworks) 20131113Wot(daliworks) 20131113
Wot(daliworks) 20131113
 
NIPA SW Insight Report '13.08
NIPA SW Insight Report '13.08NIPA SW Insight Report '13.08
NIPA SW Insight Report '13.08
 
Agile Spirit Base On The Book "Agile Samuari"
Agile Spirit Base On The Book "Agile Samuari"Agile Spirit Base On The Book "Agile Samuari"
Agile Spirit Base On The Book "Agile Samuari"
 
Uml intro 1
Uml intro 1Uml intro 1
Uml intro 1
 
Uml intro 0
Uml intro 0Uml intro 0
Uml intro 0
 
21 application and_network_status
21 application and_network_status21 application and_network_status
21 application and_network_status
 
20 handler and_async_task
20 handler and_async_task20 handler and_async_task
20 handler and_async_task
 
18 안드로이드 리스트뷰_속도향상
18 안드로이드 리스트뷰_속도향상18 안드로이드 리스트뷰_속도향상
18 안드로이드 리스트뷰_속도향상
 
19 나만의 view 만들기
19 나만의 view 만들기19 나만의 view 만들기
19 나만의 view 만들기
 
17 adapter view & db
17 adapter view & db17 adapter view & db
17 adapter view & db
 
16 데이터 저장과 사용
16 데이터 저장과 사용16 데이터 저장과 사용
16 데이터 저장과 사용
 
15 content provider
15 content provider15 content provider
15 content provider
 
14 broad castreceiver
14 broad castreceiver14 broad castreceiver
14 broad castreceiver
 
13 service 좀더
13 service 좀더13 service 좀더
13 service 좀더
 
12 service
12 service12 service
12 service
 
11 tablet 대응 가이드
11 tablet 대응 가이드11 tablet 대응 가이드
11 tablet 대응 가이드
 
10 view orientation_change
10 view orientation_change10 view orientation_change
10 view orientation_change
 
09 android keyboard & layout
09 android keyboard & layout09 android keyboard & layout
09 android keyboard & layout
 
08 fragment 태블릿 대응
08 fragment   태블릿 대응08 fragment   태블릿 대응
08 fragment 태블릿 대응
 
08 font size
08 font size08 font size
08 font size
 

03 activity.finish

  • 2. Activity.finish 의외로 다양하다?! 결론은 현재 Activity를 닫는다는 이야기.
  • 3. 가장 흔한 실수. finish하면 끝일 것이라는 생각. finish 호출이 되면 여기서 프로그램 flow가 마쳐질 것이라 예상하는 경우가 많습니다. 그래서 SummarizeCurrentEvent는 finish 호출 뒤에 수행이 되지 않을 것이라 생각을 합니다. 결론은 그렇지 않습니다. 만약 finish 후 flow를 마치고자 하면 return을 명시하세요.
  • 4. finish()에 대해서 안드로이드 시스템에 이 Activity를 마칠 준비를 진행 시켜서 마쳐주라고 이야기를 할 뿐. 실제 수행 시점은 시스템이 결정.
  • 5.
  • 6. 미완성 결론 Activity.finish는 바로 해당 Activity를 종료시키는 exit와 같은 신호가 아닙니다. 안드로이드 시스템에게 본 Activity에 대해서 사용자가 제어권이 풀리는 시점 (주어진 작업을 마 치는 시점)에 종료를 위한 준비를 진행하라고 신호를 주는 것입니다. 그러고 나면, 시스템은 해당 finish가 호출되는 시점에 현재 진행 예약 중인 작업들을 마친 뒤에 종료 준비 작업을 할 수 있도록 처리를 합니다. 이 처리라고 하는 부분은 메모리 GC 대상으로 표 시를 하는 것까지 포함되는 것 같습니다. 그리고 이 신호는 Activity 내 message queue에 종료 신호를 등록하는 형태로 처리되는 것으로 예상됩니다. 그리고 실제로 메모리에서 지워지는 것은 언제인지는 보장은 못 합니다. 이건 전능한 안드로이 드 시스템이 알아서 진행할 것입니다. 이번 결론은 내부 소스 코드를 보지 못해서, 현재까지 통용되고 있는 데이터들을 바탕으로 추측한 결과입니다. 이에 따라서 본 결론에 대한 신빙성은 추가적으로 검증 되어야 합니다.
  • 7. 참고 자료 • http://stackoverflow.com/questions/4924071/calling-finish-on-an- android-activity-doesnt-actually-finish • http://stackoverflow.com/questions/2590947/about-finish-in- android • http://blog.naver.com/PostView.nhn?blogId=asiakth&logNo=1101 34773300 • http://stackoverflow.com/questions/10847526/what-exactly- activity-finish-method-is-doing • http://www.edumobile.org/android/android-programming- tutorials/difference-between-kill-activity-and-finish-activity/ • https://groups.google.com/forum/?fromgroups=#!topic/android- developers/Y96KnN_6RqM