안드로이드 개발 질문/답변
(글 수 45,052)
제목이 길었습니다.
짧게 질문 드리면 하나의 A 어플을 엑티비티로 화면에서 동작 중인 상태에서 Back 버튼 과 Home 버튼을 누르면
onPause() 가 호출되는 것을 로그를 찍어 확인하였습니다.
다시 이때 다시 A 어플을 동작시켜보니
이전에 Back 버튼을 눌렀을 경우에는 onCreate 가 호출되며
Home 버튼을 눌렸을 경우에는 onResume 가 호출되는것을
마찬가지 로그를 통하여 확인 하였습니다.
즉,
onResume 로 호출될경우 이전에 A 어플의 상태로 나타냈으며
onCreate 로 호출될경우 처음 시작할때의 A 어플의 상태였습니다.
제가 테스트 결과가 확실한 것인지를 먼저 질문드리며,
Back 버튼을 누른후 다시 A 어플을 시작하였을 때 onResume 가 호출되었을때와
같이 이전 상태로 시작할 수 있는 방법에 대하여 질문드립니다.
onCreate의 경우 새로 create를 하게 되어 이전 상태( 변수 값 및 view 의 형태 등등등) 을
다시 생성하여 처음과 같이 동작하는 것으로 생각됩니다.
감사합니다.
2009.08.07 23:45:56
말씀하신대로 동작하는게 정상입니다. Back 키를 눌렀을 경우 해당 액티비티가 종료되어 Destoy되기 때문에 메모리에서 완전히 사라지지만, Home 키를 눌렀을 경우는 액티비티가 종류가 되는 것이 아니라 잠시 뒤로 감춰졌을 뿐이고 메모리에 남아있습니다. 두개를 비슷하게 보이도록 만드려면 onDestory나 onStop등에서 데이터를 파일시스템에 직접 저장하고 onStart등에서 복구하는 방법이 있습니다.
2009.08.10 12:12:49
답변 감사합니다. 제가 Back 버튼에 대하여 잘못 알고 있었네요. Back 버튼 역시 엑티비티 종료가 되는것이 아니라 잠시 뒤로 감추어진다고 생각 했었는데, Destroy가 되었군요..
한가지 추가 질문 드릴께요.
한가지 추가 질문 드릴께요.
onDestory나 onStop등에서 데이터를 파일시스템에 직접 저장한다고 말씀하신것에 대하여 구체적인 설명을 좀 부탁드리여도 될까요?
이해가 되지 않아서요. 파일시스템에 저장하라는것이 파일이나 DB 에 저장을 해서 onStart에서 파일을 읽어 처리하라는 말씀이신가요?
또한, onCreate 와 onStart 사이이 관계에 대해서도 간단한 설명 부탁드려봅니다.
어플리케이션 작성시 Back 버튼에 대하여 설명해주신 루틴을 추가하는 것이 필요한가요? 직관적으로 Back 이라는것은 뒤로(이전 화면) 갈때 사용하게 되는데 Back 버튼을 누렀을 경우 메모리에서 삭제된다고 하면 정작 Back 버튼에 대한 의미가 없는듯 하여 질문드려봅니다.
감사합니다.
2009.08.10 13:17:27
반드시 onStart에서 처리해야하는 것은 아니고 몇가지 차이점이 있을 수 있는데 자세한 것은 LifeCycle에 대한 문서를 확인해보시기 바랍니다. http://developer.android.com/reference/android/app/Activity.html
안드로이드 애플리케이션의 기본 백버튼의 기능은 현재 화면을 종료하고 이전 화면으로 가는 것이니 그것에 대한 추가적인 설명은 필요없습니다. 안드로이드 사용자에게는 그게 직관적인 반응닙니다. 그 외의 경우에 설명이 필요하겠지요.