캠핑과 개발

activity +1




onCreate() - 활동의 정적 자료 초기화에 적합
하나의 활동이 처음 시작되면 해당 Active객체의 onCreate() 메서드가 호출한다. onCreate()메서드는 Bundle 객체를 하나의 매개변수로 받는다. 새로 시작된 Activity의 경우에는 null이 전달되어 진다. 주어진 활동이 메모리상의 이유로 삭제 되었다가 다시 시작된 것이라면 이 Bundle객체에는 해당 활동의 이전 상태 정보가 들어 있게 된다. 따라서 활동은 그 정보를 이용해서 이전 상태를 복원할 수 있다. 흔히 onCreate() 메서드에서는 레이아웃과 자료 묶기(data Binding)와 같은 초기 설정 작업을 수행한다.

다음 메서드 - onStart()


onRestart()
액티비티가 정지된 후, 그것이 다시 시작되기 바로 전에 호출 된다. 항상 onStart()가 이어진다.

다음 메서드 - onStart()


onStart()
액티비티가 사용자에게 보여지기 바로 직전에 호출된다. 만약 액티비티가 전경에 오면 onResume(), 또는 이 액티비티가 숨겨지게 되면 onStop()로 이어진다.

다음 메서드 - onResume(), onStop()


onResume() 활동 자료의 초기화 및 준비에 적합
한 활동이 활동 스택의 제일 위에 놓이고 전경 프로세스가 되면 onResume() 메서드가 호출된다. 이 시점에서 활동이 사용자에게 보이지 않을 수도 있지만, 그래도 활동의 실행에 필요한 자원들(독점자원이든 공유 자원이든)을 준비하기에 가장 적합한 곳이 이 메서드이다. 자원들을 유지하는데에는 비용이 많이 들기 때문에, 활동이 전경에 있을 때에만 자원들을 유지하는 것이 바람직하다.

다음 메서드 - onPause()


onPause() - 활동 자료의 중지, 저장, 해제체 적합
다른 활동이 활동 스택의 최상단을 차지하면 현재 활동은 배경으로 밀려나게 된다. 이 때 배경으로 밀려나는 활동의 onPause()메서드가 호출된다. 이 메서드에서 활동은 onResume()메서드에서 재생을 시작한 오디오나 동영상, 애니메이션을 중단 해야 한다. 또한 데이터베이스의 커서(Cusor 객체) 같은 자원들도 비활성화 해야 한다.(커서 같은 자원들이 자동으로 관리하게 두는 대신 직접 관히하는 경우) onPause() 메서드는 활동이 배경에 있는 동안 필요하지 않은 자원들을 해제할 마지막 기회이기도 하다. 이 시점 이후에는 응용프로그램의 실행이 재개되지 않을 수도 있으므로 여기서 중요한 자료를 저장하거나 마무리를 해야 한다.

다음 메서드 - onResume(), onStop()



onStop()
액티비티가 사용자에게 더이상 보여지지 않을 때 호출된다. 이것은 액티비티가 파괴될 것이기 때문에 발생하거나, 또는 다른 액티비티가 재개되어 해당 액티비티를 덮기  때문에 발생한다. 액티비티가 사용자와 상호작용하기 위해 돌아 온다면 onRestart()가 또는 이 액티비타가 사라지기 된다면 onDestory가 이어진다.

다음 메서드 - onReStart(), onDestroy()



onDestroy() - 활동의 정적 자료 파괴에 적합
활동이 파괴되기 직전에 onDestroy() 메서드가 호출된다. onDestroy() 메서드가 호출되는 이유는 두 가지이다. 하나는 활동이 자발적으로 자신의 수명을 끝내려 하기 때문이고, 또 하나는 자원 부족때문에 안드로이드가 활동을 죽이려 하기 때문이다.

다음 메서드 - 없음



그 외 메소드..

onSaveInstanceState() - 활동의 필수적이지 않은 상태를 Bundle에 저장
메모리가 부족해서 운영체제가 활동을 죽이는 경우가 많다면, onSaveInstanceState()메서드 콜백시 Bundle 객체에 상태 정보를 저장하는 것도 한 방법이다. 그러나 onSaveInstanceState()가 모든 상황에서 반드시 호출된다는 보장은 없으므로, 응용프로그램의 실헹에 필수적인 자료들은 onPause() 메서드에서 저장한는 것이 안전하다.
아직 제출이 되지 않은 필드 자료라던가 사용자에 대한 응용 프로그램의 반응성을 높이기 위한 상태 정보 등 필수 적이지 않은 정보를 저장하는 곳으로 적합하다. 이후 사용자가 해당 활동을 다시 활성화하면 그 Bundle이 onCreate() 메서드로 전달된다. 이를 이용해서 활동은 일시정지 전의 상태를 정확히 복원할 수 있다. 또한 onStart() 콜백 메서드 이후에 onRestoreInstanceState() 콜백을 이용해서 이 Bundle의 정보를 읽는 것도 가능한다.

onUserInteraction()
활동이 전경에서 실행되는 동안 키나 터치, 트랙볼 사건이 발생하면 호출 된다. 단, 첫 번째 사건에 대해서만 콜백이 호출된다. 즉, 예를 들어 키 눌림(down), 눌림 유지(pressed), 떼어짐(up) 사건마다 매번 호출되는 것이 아니라 사용자 상호작용이 처음 일어난 시점만 호출된다. 이는 상태 표시줄을 관리하는  데 유용한다.(특히 사용자가 현재 작동을 취소하고자 하는 경우)

onUserLeaveHint()
활동이 사용자 상호작용에 의해(이를테면 안드로이드의 "뒤로" 키이나 "홈" 키를 누르는 등) 배경이 물러날 때에만 onPause() 호출 직전에 한 번 호출된다. 다른 활동이 전경을 차지해서 배경으로 물러나는 경우에는 호출되지 않는다. 
이는 상태 표시줄을 관리하는  데 유용한다.(특히 사용자가 현재 작동을 취소하고자 하는 경우)

'DEVELOPMENT > Android' 카테고리의 다른 글

[Android] 앱 외장메모리 설치  (0) 2011.05.16
Intent 사용법  (0) 2011.04.21
아이폰,안드로이드 기종별 해상도 차이  (0) 2011.04.20
[Android] 타이틀바 없애기  (0) 2011.04.13