액티비티의 대표적인 상태 정보 | |
상태 | 설명 |
실행(Running) |
화면 상에 액티비티가 보이면서 실행되어 있는 상태. 액티비티 스택의 최상위에 있으며 포커스를 가지고 있음. |
일시 중지(Paused) |
사용자에게 보이기는 하지만 다른 액티비티가 위에 있어 포커스를 받지 못하는 상태. 대화상자가 위에 있어 일부가 가려져 있는 경우에 해당함 |
중지(Stopped) | 다른 액티비티에 의해 완전히 가려져 보이지 않는 상태 |
예를 들어)
게임에서 점수를 저장할때 -> onPause() 상태일 때,
다시 복구할 때 -> onReasume() 하면 됨.
중요한거
onPause() : - 뭔가 중지된 시점에서 바로 호출되는 거
- onPause()상태에서 필요한 데이터를 저장을 합니다.
- (저장이라는 말이, 이 디스크에 남아 있어야하는데, 그러면 파일에 저장을 하거나
데이터베이스에 저장을 해야한다,
근데 더 쉬운 방법 있음 sharedpreferences 사용하면됨.
(간단한 설정정보를 저장하는데 사용하면 된다))
onReasume() : 다시 복구 되기 바로 전이 onReasume() 이다.
onCreate()
시스템이 활동을 생성할 때 실행되는 이 콜백을 구현해야 한다.
구현 시 활동의 필수 구성요소를 초기화해야 한다.
예를 들어 앱은 여기에서 뷰를 생성하고 데이터를 목록에 결합해야 한다.
이 콜백에서 setContentView()를 호출하여 활동의 사용자 인터페이스를 위한 레이아웃을 정의해야 하며 이 작업이 가장 중요합니다.
onCreate()가 완료되면 다음 콜백은 항상 onStart()이다.
-추가 설명-
Activity를 ViewModel과 연결한다.
onCreate()에서 하는 거는 사용자 인터페이스 선언(XML 레이아웃 파일에 정의됨), 멤버 변수 정의, 일부 UI 구성 등의 Activity에 대한 기본 설정을 보여준다. 이 예시에서 XML 레이아웃 파일은 파일의 리소스 ID인 R.layout.main_activity를 setContentView()에 전달하여 지정한다.
onStart()
onCreate()가 종료되면 활동은 '시작됨' 상태로 전환되고 활동이 사용자에게 표시된다.
이 콜백에는 활동이 포그라운드로 나와서 대화형이 되기 위한 최종 준비에 준하는 작업이 포함된다.
-추가 설명-
.onStart()가 호출되면 Activity가 사용자에게 보이게 되고,
앱은 Activity를 포그라운드에 보내 상호작용할 수 있도록 준비합니다.
예를 들어 이 메서드에서 앱이 UI를 관리하는 코드를 초기화합니다.
onResume()
활동이 사용자와 상호작용을 시작하기 직전에 시스템은 이 콜백을 호출합니다.
이 시점에서 활동은 활동 스택의 맨 위에 있으며 모든 사용자 입력을 캡처합니다.
앱의 핵심 기능은 대부분 onResume() 메서드로 구현됩니다.
onPause() 콜백은 항상 onResume() 뒤에 옵니다.
-추가 설명-
어떤 이벤트가 발생하여 앱에서 포커스가 떠날 때까지 앱이 이 상태에 머무릅니다. 예를 들어 전화가 오거나, 사용자가 다른 Activity로 이동하거나, 기기 화면이 꺼지는 등 이벤트가 이에 해당합니다.
Activity가 일시정지됨 상태에서 재개됨 상태로 돌아오면 시스템이 onResume() 메서드를 다시 한번 호출합니다.
따라서 onResume()을 구현하여 onPause() 중에 해제하는 구성요소를 초기화하고,
Activity가 재개됨 상태로 전환될 때마다 필요한 다른 초기화 작업도 수행해야 합니다.
onPause()
활동이 포커스를 잃고 '일시중지됨' 상태로 전환될 때 시스템은 onPause()를 호출한다.
예를 들어 이 상태는 사용자가 뒤로 또는 최근 버튼을 탭할 때 발생한다.
시스템이 활동에서 onPause()를 호출할 때 이는 엄밀히 말하면 활동이 여전히 부분적으로 표시되지만 대체로 사용자가 활동을 떠나고 있으며 활동이 조만간 '중지됨' 또는 '다시 시작됨' 상태로 전환됨을 나타냅니다.
사용자가 UI 업데이트를 기다리고 있다면 '일시중지됨' 상태의 활동은 계속 UI를 업데이트할 수 있다.
이러한 활동의 예에는 내비게이션 지도 화면 또는 미디어 플레이어 재생을 표시하는 활동이 포함된다.
이러한 활동이 포커스를 잃더라도 사용자는 UI가 계속 업데이트될 것으로 예상합니다.
애플리케이션 또는 사용자 데이터를 저장하거나 네트워크를 호출하거나 데이터베이스 트랜잭션을 실행하는 데 onPause()를 사용해서는 안 된다.
onPause()가 실행을 완료하면 다음 콜백은 활동이 '일시중지됨' 상태로 전환된 후 발생하는 상황에 따라 onStop() 또는 onResume()이다.
-추가 설명-
- 시스템은 사용자가 Activity를 떠나는 것을 나타내는 첫 번째 신호로 이 메서드를 호출한다(하지만 해당 Activity가 항상 소멸되는 것은 아니다)
- UI 관련 리소스와 작업을 완전히 해제하거나 조정할 때는 onPause() 대신 onStop()을 사용하는 것이 좋습니다.
- onPause()는 아주 잠깐 실행되므로 저장 작업을 수행하기에는 시간이 부족할 수 있습니다. 그러므로 onPause()를 사용하여 애플리케이션 또는 사용자 데이터를 저장하거나, 네트워크 호출을 하거나, 데이터베이스 트랜잭션을 실행해서는 안 된다!!! 이러한 작업은 메서드 실행이 끝나기 전에 완료되지 못할 수도 있습니다. 그 대신, 부하가 큰 종료 작업은 onStop() 상태일 때 실행해야 한다!!
onStop()
- 활동이 사용자에게 더 이상 표시되지 않을 때 시스템은 onStop()을 호출한다.
- 이는 활동이 제거 중이거나 새 활동이 시작 중이거나 기존 활동이 '다시 시작됨' 상태로 전환 중이고 중지된 활동을 다루고 있기 때문에 발생할 수 있습니다.
- 이 모든 상황에서 중지된 활동은 더 이상 표시되지 않습니다.
- 시스템이 호출하는 다음 콜백은 활동이 사용자와 상호작용하기 위해 다시 시작되면 onRestart()이며 이 활동이 완전히 종료되면 onDestroy()입니다.
onRestart()
'중지됨' 상태의 활동이 다시 시작되려고 할 때 시스템은 이 콜백을 호출한다.
onRestart()는 활동이 중지된 시간부터 활동 상태를 복원한다.
이 콜백 뒤에 항상 onStart()가 온다.
onDestroy()
시스템은 활동이 제거되기 전에 이 콜백을 호출합니다.
이 콜백은 활동이 수신하는 마지막 콜백입니다.
onDestroy()는 일반적으로 활동 또는 활동이 포함된 프로세스가 제거될 때 활동의 모든 리소스를 해제하도록 구현된다.
-추가 설명-
(사용자가 Activity를 완전히 닫거나 Activity에서 finish()가 호출되어) Activity가 종료되는 경우
'■ Android > Study' 카테고리의 다른 글
[Android] 위험 권한 및 권한 그룹 (0) | 2020.01.12 |
---|---|
액티비티 구성요소 4가지 (0) | 2020.01.10 |
인플레이션,레이아웃인플레이션 이란? (0) | 2020.01.06 |
[Android] 리소스(res) 종류 or 관리 (0) | 2019.12.23 |
뷰의 계층구조 (0) | 2019.12.22 |