본문 바로가기

구글과인터넷/안드로이드

안드로이드 finishActivity()와 finish() 차이

출처: http://www.androidpub.com/index.php?mid=android_dev_qna&page=1099&document_srl=27879

 2가지 질문 이 있습니다.

1)  finishActivity()와 finish() 차이가 뭔가요?


startActivityForResult() 해서 실행시킨 activity에서 결과 설정 후 finish()해서 종료 후 호출한 쪽으로 돌아가는 걸로 알고 있습니다.

finishActivity(requestCode)는 특정 activity를 종료 시키는 걸로 설명이 되어 있던데, 버튼에 해당에 넣어봐도 동작을 안 하네요..

만약 정말 종료 되었다면 onDestroy()가 호출 되지 않나요???

그리고,  시스템에서 메모리 자원 부족 시에 최근 가장 사용되지 않은 activity를 kill시킬 때, onDestroy()가 호출되는거 맞죠?
finish()메소드에 의해서도 onDestroy()가 호출되는 걸로 알고 있는데...


2)  가상키보드를 만들고 싶은데요, InputMethod 부분을 보면 되나요??

    SDK안에 보니까 관련 sample code가 제공이 되던데, 무턱대고 보니 넘 이해가 안 가서요.
   InputMethod 부분부터 보아야 하나요?? 
  가상 키보드 ( 소프트 키보드) 로 한글키보드를 한번 만들어 보고 싶습니다.
  방법 및 관련 자료 좀 알려 주세요...

설명 좀 부탁 드릴께요.  오늘도 행복한 하루~ 되세요 ^^


//답변

1. finish는 현재 액티비티를 종료시키는 것 즉 스스로 사라지는 것이고, finishActivity는 startActivityForResult로 생성한 다른 Activity를 종료시킬때 사용하는 메소드네요. 메모리가 없을 경우 포함 정상적으로 종료되는 경우는 onDestroy가 호출됩니다. 가끔 프로세스가 비정상적으로 종료되는 경우가 있는데 그런 경우외에는 항상 호출된다고 봐야지요.

2. Sample Application 은 비교적 쉽게 작성되어있습니다. SoftKeyboard부분을 잘 살펴보세요.