프로그래밍 언어/Android

Android 활동 수명주기에 대해서

Rateye 2021. 10. 1. 12:13
728x90
반응형
질문 : Android 활동 수명주기-이 모든 방법은 무엇입니까?

Android 활동의 수명주기는 무엇입니까? 왜 그렇게 많은 유사한 사운드 메서드 ( onCreate() , onStart() , onResume() )가 초기화 중에 호출되고 다른 많은 onPause() , onStop() , onDestroy() )가 마지막에 호출되는 이유는 무엇입니까?

이러한 메서드는 언제 호출되며 어떻게 적절하게 사용해야합니까?

답변

활동 수명주기 (Android 개발자)에서 확인하세요.

여기에 이미지 설명 입력

onCreate () :

활동이 처음 생성 될 때 호출됩니다. 여기에서 뷰 생성, 목록에 데이터 바인딩 등 일반적인 정적 설정을 모두 수행해야합니다.이 방법은 활동의 이전에 고정 된 상태 (있는 경우)를 포함하는 번들도 제공합니다. 항상 onStart ()가 뒤 따릅니다.

onRestart () :

활동이 중지 된 후 다시 시작되기 전에 호출됩니다. 항상 onStart ()가 뒤 따릅니다.

onStart () :

활동이 사용자에게 표시 될 때 호출됩니다. 활동이 포 그라운드로 오면 onResume ()이 뒤 따릅니다.

onResume () :

활동이 사용자와 상호 작용을 시작할 때 호출됩니다. 이 시점에서 활동은 사용자 입력으로 이동하는 활동 스택의 맨 위에 있습니다. 항상 onPause ()가 이어집니다.

onPause () :

활동이 백그라운드로 이동하지만 아직 종료되지 않은 경우 활동 라이프 사이클의 일부로 호출됩니다. onResume ()에 대응합니다. 활동 B가 활동 A 앞에서 시작되면이 콜백이 A에서 호출됩니다. B는 A의 onPause ()가 반환 될 때까지 생성되지 않으므로 여기서 긴 작업을 수행하지 마십시오.

onStop () :

사용자에게 더 이상 표시되지 않을 때 호출됩니다. 다음에 사용자 활동에 따라 onRestart (), onDestroy () 또는 아무것도 수신하지 않습니다. 이 메서드는 onPause () 메서드가 호출 된 후 활동의 프로세스를 계속 실행하기에 시스템에 충분한 메모리가없는 메모리가 부족한 상황에서 호출되지 않을 수 있습니다.

onDestroy () :

활동이 파괴되기 전에받은 마지막 전화입니다. 이것은 활동이 완료되고 있거나 (누군가가 finish ()라고 부르거나, 시스템이 공간을 절약하기 위해 활동의이 인스턴스를 일시적으로 파괴하고 있기 때문에 발생할 수 있습니다. isFinishing () 메서드를 사용하여이 두 시나리오를 구분할 수 있습니다.>

활동이 처음로드 되면 이벤트는 다음과 같이 호출됩니다.

onCreate()
onStart()
onResume()

전화 버튼을 클릭 하면 활동이 백그라운드로 이동하고 아래 이벤트가 호출됩니다.

onPause()
onStop()

전화 다이얼러를 종료하면 아래 이벤트가 호출됩니다.

onRestart()
onStart()
onResume()

뒤로 버튼 을 클릭하거나 활동을 완료 () 하려고하면 다음과 같이 이벤트가 호출됩니다.

onPause()
onStop()
onDestroy()

활동 상태

Android OS는 기기에서 실행되는 활동을 관리하는 데 도움이되는 우선 순위 대기열을 사용합니다. 특정 Android 활동이있는 상태에 따라 OS 내에서 특정 우선 순위가 지정됩니다. 이 우선 순위 시스템은 Android가 더 이상 사용되지 않는 활동을 식별하는 데 도움이되므로 OS가 메모리와 리소스를 회수 할 수 있습니다. 다음 다이어그램은 활동이 수명 동안 진행될 수있는 상태를 보여줍니다.

이러한 상태는 다음과 같이 세 가지 주요 그룹으로 나눌 수 있습니다.

활성 또는 실행 중 -활동이 포 그라운드 (활동 스택의 맨 위라고도 함)에있는 경우 활동이 활성 또는 실행중인 것으로 간주됩니다. 이것은 Android 활동 스택에서 가장 우선 순위가 높은 활동으로 간주되며, 이러한 활동이 기기에서 사용할 수있는 것보다 더 많은 메모리를 사용하려고하는 경우와 같이 극한 상황에서만 OS에 의해 종료됩니다. 응답하지 않습니다.

일시 중지됨 -장치가 절전 모드로 전환되거나 활동이 계속 표시되지만 전체 크기가 아니거나 투명한 새 활동에 의해 부분적으로 숨겨지면 활동이 일시 중지 된 것으로 간주됩니다. 일시 중지 된 활동은 여전히 살아 있습니다. 즉, 모든 상태 및 구성원 정보를 유지하고 창 관리자에 연결된 상태로 유지됩니다. 이것은 Android 활동 스택에서 두 번째로 우선 순위가 높은 활동으로 간주되며, 따라서이 활동을 종료하면 활성 / 실행중인 활동을 안정적이고 응답 적으로 유지하는 데 필요한 리소스 요구 사항을 충족하는 경우에만 OS에 의해 종료됩니다.

중지됨 -다른 활동에 의해 완전히 가려진 활동은 중지되었거나 백그라운드에있는 것으로 간주됩니다. 중지 된 활동은 여전히 가능한 한 오랫동안 자신의 상태 및 구성원 정보를 유지하려고 시도하지만 중지 된 활동은 세 가지 상태 중 가장 낮은 우선 순위로 간주되므로 OS는 리소스 요구 사항을 충족하기 위해 먼저이 상태의 활동을 종료합니다. 더 높은 우선 순위 활동의.

* 수명주기를 이해하기위한 샘플 활동 **

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
    String tag = "LifeCycleEvents";
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       Log.d(tag, "In the onCreate() event");
    }
    public void onStart()
    {
       super.onStart();
       Log.d(tag, "In the onStart() event");
    }
    public void onRestart()
    {
       super.onRestart();
       Log.d(tag, "In the onRestart() event");
    }
    public void onResume()
    {
       super.onResume();
       Log.d(tag, "In the onResume() event");
    }
    public void onPause()
    {
       super.onPause();
       Log.d(tag, "In the onPause() event");
    }
    public void onStop()
    {
       super.onStop();
       Log.d(tag, "In the onStop() event");
    }
    public void onDestroy()
    {
       super.onDestroy();
       Log.d(tag, "In the onDestroy() event");
    }
}
출처 : https://stackoverflow.com/questions/8515936/android-activity-life-cycle-what-are-all-these-methods-for
728x90
반응형