본문 바로가기
카테고리 없음

안드로이드 라이프 사이클

by ekyoo 2022. 8. 2.
반응형
SMALL

안드로이드 라이프 사이클

안드로이드 라이프 사이클은 개발자가 사용자가 앱을 통해 탐색할 때 어떤 상태에서의 활동이 진행되는지 이해하는 데 도움이 됩니다. 결과적으로, 우리는 적절한 시간에 적절한 작업을 할 수 있고 충돌과 다른 버그를 피할 수 있습니다. Android 응용 프로그램에는 라이프사이클이 있습니다. 사용자가 애플리케이션을 열고 종료할 때부터 다양한 단계를 거칩니다. 응용 프로그램 상태는 사용자가 활동을 열고 일시 중지하고 다시 시작하고 중지하고 삭제하는 시간을 관리하는 데 도움이 됩니다. 콜백 메서드는 이러한 상태를 관리합니다. 이러한 방법을 재정의하여 특정 작업을 수행하여 사용자에게 올바른 출력을 제공할 수 있습니다. 응용 프로그램이 백그라운드에서 실행 중이고 일부 데이터를 저장하려고 합니다. 이 경우 활동 수명 주기에 대해 알아야 합니다. 이를 통해 상황에 맞는 콜백을 구현할 수 있습니다.

 

Activity 생성

Activity 생성 onCreate() 콜백은 모든 Android 응용 프로그램에서 필수입니다.

홈 스크린이나 인텐트에서 액티비티를 시작할 때 가장 먼저 호출되는 방법입니다. 즉, 새 활동을 만들 때 자동으로 생성되는 기본 콜백입니다. 이 방법은 개발자가 View Model 초기화처럼 한 번만 수행해야 하는 활동 로직을 구현하는 데 필요한 유일한 방법입니다. Android Studio는 자동으로 MainActivity.java 파일이라는 클래스를 만듭니다. 이 클래스는 onCreate() 콜백을 포함합니다. 사용자가 애플리케이션을 처음 열 때 호출됩니다. 응용 프로그램이 장치에 설치되면 존재하지 않는 상태입니다. 활동이 중단되었음을 의미합니다. 사용자가 응용프로그램을 열면 수명 주기가 시작됩니다. 활동이 표면화됩니다. 이 경우 onCreate()가 즉시 호출되어 응용 프로그램을 실행합니다. 활동 UI와 같은 구성 요소를 포함할 수 있습니다. onCreate() 메서드는 작업이 OS에 메모리를 가져올 때 호출됩니다.

Create 상태를 사용하려면 Create(Bundle saved InstanceState) 메서드에서 재정의해야 합니다. 여기서 Bundle이 무엇인지에 대한 의문이 제기될 것입니다. Bundle은 모든 종류의 기본 데이터를 저장할 수 있는 데이터 저장소 개체이며 일부 데이터가 저장되지 않는 한 null이 됩니다. 활동을 처음 호출하거나 시작할 때 onCreate(Bundle savedInstanceState) 메서드가 활동을 만듭니다. 활동의 모든 방향(즉, 수평에서 수직 또는 수직에서 수평으로)이 변경되거나 운영 체제에 의해 활동이 강제로 종료되면 저장된 인스턴스 상태(즉, 번들 클래스의 개체)가 활동의 상태를 저장합니다. 초기화 코드를 넣기에 가장 좋은 장소입니다.

 

Activity 시작

 Activity 시작 onStart() 메서드는 생성 직후 호출됩니다. 또는 활동을 중지한 후 다시 시작 방법을 호출하여 활동을 시작할 수도 있습니다. 따라서 사용자가 애플리케이션을 전환할 때 안드로이드 OS에서 onStart()가 호출됩니다.

예를 들어, 사용자가 A 애플리케이션을 사용하다가 알림이 뜨고 사용자가 알림을 클릭하고 B 애플리케이션으로 이동하면 A 애플리케이션이 일시 중지됩니다. 그리고 사용자가 다시 A 애플리케이션의 앱 아이콘을 클릭하면 중지되었던 A 애플리케이션이 다시 시작됩니다.

 

Activity 다시시작

Activity 다시시작 onResume() 메서드는 다시 시작된 활동은 실제로 사용자에게 표시되는 상황이 활동에 표시되는 데이터를 사용자에게 표시하는 것을 의미합니다. 라이프 사이클에서는 활동이 시작된 후 항상 호출되며 대부분의 경우 활동이 일시 중지된 후 호출됩니다(일시 중지 시).

 

Activity 일시중지

Activity 일시중지 onPause() 메서드는 대부분의 경우 Android OS에서 사용자가 홈 단추(장치의 가운데 단추)를 눌러 숨기면 작업이 일시 중지됩니다.

또한 사용자가 뒤로 이동 버튼을 누를 경우 정지 호출 전에 활동이 일시 중지됩니다. 알림 또는 다른 대화 상자가 활동(화면)의 일부(위 또는 아래)를 오버레이하는 경우에도 이러한 이유로 활동이 일시 중지된 상태가 됩니다.

마찬가지로, 다른 화면이나 대화 상자가 투명하면 사용자는 화면을 볼 수 있지만 화면과 상호 작용할 수는 없습니다.

예를 들어, 통화 또는 알림이 들어오면 사용자는 전화를 받거나 무시할 수 있는 기회를 얻게 됩니다.

 

Activity 중지

Activity 중지 onStop() 메서드는  활동이 사용자에게 표시되지 않으면 중지됨이라고 합니다.

다른 활동이 발생할 경우 모든 활동이 중지됩니다.

예를 들어, 사용자가 화면 1에 있고 어떤 버튼을 클릭하면 화면 2로 이동합니다.

이 경우 화면 1의 내용을 표시하는 활동이 중지됩니다. 사용자가 다시 탐색 버튼을 누를 경우 파괴하기 전에 모든 활동이 중지됩니다. 따라서 숨기거나 사용자가 시작하거나 전환한 다른 활동으로 대체되면 활동이 중지된 상태가 됩니다. 이 경우 응용 프로그램이 중지되므로 사용자에게 유용한 정보를 직접 제공하지 않습니다.

 

Activity 재시작

Activity 재시작 onRestart() 메서드는 중지 상태 후 다시 시작 상태에서 작업을 호출합니다.

따라서 사용자가 화면에 나타나거나 중지된 활동을 재개할 때 액티비티의 onRestart() 기능이 호출됩니다.

즉, 운영 체제가 작업을 처음 시작할 때 다시 시작()이 호출되지 않습니다.

중지된 상태 후 활동이 재개되는 경우에만 호출됩니다.

 

Activity 소멸

Activity 소멸 onDestroy() 메서드는 모든 활동은 백그라운드에 없을 때 파괴된 상태로 알려져 있습니다.

활동이 언제 파괴되는지에 따라 다른 경우가 있을 수 있습니다.

첫째, 사용자가 뒤로 이동 버튼을 누르면 일시 중지 및 정지 라이프 사이클이 완료된 후 활동이 파괴됩니다.

사용자가 홈 버튼을 누르고 앱이 백그라운드로 이동하는 경우. 사용자가 더 이상 사용하지 않고 최근 앱 목록에 표시됩니다.

따라서 이 경우 시스템에서 필요한 리소스를 다른 곳에서 사용해야 하는 경우 OS가 활동을 파괴할 수 있습니다.

사용자가 다시 앱 아이콘을 클릭하면 액티비티가 파괴된 후, 이 경우 액티비티가 다시 생성되고 동일한 라이프 사이클을 다시 따릅니다.

또 다른 사용 사례는 스플래시 스크린에서 액티비티의 onCreate()에서 finish() 메서드가 호출되면 OS가 직접 Destroy()를 호출하고 일시중지와 중지메서드를 호출할 수 있습니다.

반응형
LIST

댓글