Android 활동 수명주기-이 모든 방법은 무엇입니까?


419

Android 활동의 수명주기는 무엇입니까? 왜 그렇게 많은 유사한 소리가 나는 방법 (있다 onCreate(), onStart(), onResume()) 초기화 중에 호출, 그래서 많은 사람들이 ( onPause(), onStop(), onDestroy()) 끝에서 호출?

이러한 메소드는 언제 호출되며 어떻게 올바르게 사용해야합니까?


17
이 질문이 왜 그렇게 자주 찬성 되었습니까? 왜 닫히지 않았습니까?
Alexander Kulyakhtin

54
공감 수가 많은 질문을 왜 닫아야합니까? Stackoverflow에는 나쁜 습관이 있습니다.
Dick Lucas

12
이것은 위키 스타일의 질문이며 사이트에서 허용되어야한다고 생각합니다.
Mateen Ulhaq

2
@Alexander Kulyakhtin-왜이 질문을 닫아야합니까? 대신 새로운 안드로이드 사용자를위한 답변에 제공된 정보를 요약 할 수없는 경우 계정을 폐쇄해야합니다. 이 질문은 지식으로 가득 차 있으며이 질문에 투표 할 것입니다.
스택 오버플로

언제 이러한 방법을 질문이라고합니까?
Sreekanth Karumanaghat

답변:


748

Activity Lifecycle (Android 개발자)에서 참조하십시오 .

여기에 이미지 설명을 입력하십시오

onCreate () :

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

onRestart () :

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

onStart () :

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

onResume () :

활동이 사용자와 상호 작용을 시작할 때 호출됩니다. 이 시점에서 활동은 활동 스택의 맨 위에 있으며 사용자 입력이 진행됩니다. 항상 onPause ()가 뒤 따릅니다.

onPause () :

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

onStop () :

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

onDestroy () :

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

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

onCreate()
onStart()
onResume()

이 때 전화 버튼을 클릭 활동은 백그라운드로 이동 및 이벤트 아래가 호출된다 :

onPause()
onStop()

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

onRestart()
onStart()
onResume()

뒤로 버튼 을 클릭하거나 finish () 시도 하면 활동이 다음과 같이 호출됩니다.

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");
    }
}

1
그래서 내가 올바르게 이해하면 onPause () 후에 onStop ()이 항상 호출됩니까?
Titouan de Bailleul

4
"onStop () : 항상 더 이상 사용자에게 보이지 않을 때 호출 됨"
Yaqub Ahmad

2
onCreate 전에 호출 될 가능성이 있습니까?
NodeDad

6
그렇습니다-기본 생성자 (매개 변수가없는 생성자)가 있습니다. 그러나 매우 기본적인 초기화 목적으로 만 사용이 제한되어 있습니다. 당신이하고있는 일을 정말로 모른다면 보통 사용 해서는 안됩니다 . 그리고 더 좋은 방법이 있다면 두 번 생각해야합니다.
Mjoellnir

1
이 링크가 활동의 수명주기를 더 잘 이해하는 데 도움이 될 수 있다고 생각합니다. iphtechnologies.com/understanding-lifecycle-in-android-activity
Ashish Kumar Mishra

162

활동에는 6 가지 상태가 있습니다

  • 만들어진
  • 시작
  • 재개
  • 일시 중지됨
  • 중지
  • 파괴됨

활동 수명주기 에는 7 가지 방법이 있습니다.

  • onCreate()
  • onStart()
  • onResume()
  • onPause()
  • onStop()
  • onRestart()
  • onDestroy()

활동 수명주기

상황

  • 앱을 열 때

    onCreate() --> onStart() -->  onResume()
  • 뒤로 버튼을 누르고 앱을 종료하면

    onPaused() -- > onStop() --> onDestory()
  • 홈 버튼을 눌렀을 때

    onPaused() --> onStop()
  • 최근 작업 목록에서 앱을 다시 열거 나 아이콘을 클릭하면 홈 버튼을 누른 후

    onRestart() --> onStart() --> onResume()
  • 알림 표시 줄에서 다른 앱을 열거 나 설정을 열 때

    onPaused() --> onStop()
  • 다른 앱 또는 설정에서 뒤로 버튼을 누르면 앱을 볼 수 있습니다.

    onRestart() --> onStart() --> onResume()
  • 화면에 대화 상자가 열리면

    onPause()
  • 대화 상자에서 대화 상자 또는 뒤로 버튼을 닫은 후

    onResume()
  • 앱에서 전화가 울리고 사용자

    onPause() --> onResume() 
  • 사용자가 전화의 응답 버튼을 눌렀을 때

    onPause()
  • 통화 종료 후

    onResume()
  • 전화기 화면이 꺼져있을 때

    onPaused() --> onStop()
  • 화면이 다시 켜질 때

    onRestart() --> onStart() --> onResume()

6
'화면에 대화 상자가 열리면 onPause ()가 호출됩니다.'라는 경고 대화 상자에는 적용되지 않습니다. 대화 상자 자체가 대화 상자 활동 인 경우에만 호출됩니다 (테마가 @android : style / Theme.Dialog로 설정되어 있음).
gaurav jain

2
귀중한 답변. 문서를 추가하려면 이것을 구글에 제출하십시오. 귀하의 답변을 Word 문서에 저장하여 보관하고 있습니다!
likejudo

"앱에서 전화가 울리고 사용자가 있음"을 이해하지 못합니다. 시나리오는 정확히 무엇입니까? 내 첫 번째는 사용자가 응용 프로그램에 있고 전화가 울리기 시작하면 전체 화면이 전화가 된 경우 onPause ()-> onStop ()이되었습니다. 헤드 업 수신 전화 메시지는 OnResume-> onPause () 일 수 있지만 확실하지 않습니다. onPause-> onResume을 요청하면 어떤 상황이 발생합니까? 통화가 끝났습니까?
Sotti

이것이 내가 찾던 것입니다. API 호출을 어디에 두어야하는지 알고 싶었습니다.
Heisenberg

시나리오 기반 답변이 마음에 들었습니다 .
kokabi

155

Google은 다음과 같은 대신 직관적이지 않은 이름을 선택했기 때문에 혼란이 발생합니다.

onCreateAndPrepareToDisplay()   [instead of onCreate() ]
onPrepareToDisplay()            [instead of onRestart() ]
onVisible()                     [instead of onStart() ]
onBeginInteraction()            [instead of onResume() ]
onPauseInteraction()            [instead of onPause() ]
onInvisible()                   [instead of onStop]
onDestroy()                     [no change] 

활동 다이어그램은 다음과 같이 해석 될 수 있습니다.

여기에 이미지 설명을 입력하십시오


1
다릅니다. 혼동을 해결하지 않으면 긴 이름은 아프지 않습니다. 예 : onRoutePresentationDisplayChanged ()는 안드로이드 SDK 내부에서 매우 많은 기능입니다
Nilesh Pawar

12
나는 개인적으로 당신의 이름이 훨씬 더 직관적이지 않고 조각과도 관련이 없다고 생각합니다.
Martin Marconcini

9
공감. 공식 문서보다 더 유용
bad_keypoints

3
좋은 소식입니다. 하나의 문제. Google에 Andoid Lifecycle 메소드를 입력하면이 이미지가 Android Life Cycle 메소드에 대한 답변으로 검색 옵션 (이미지 검색 모드에서도) 위에 나타납니다. 플로우 차트 이미지 (이미지)를 클릭하지 않고 StackOverflow 링크를 따르지 않으면 인식하지 못하는 (또는 사용자가 보는 방식에 따라 게으른) 쉽게 오도 될 수 있습니다.
Andrew S

1
예. 이것이 내가 찾던 것입니다. 누군가 이와 같은 것들로 책 (또는 문서)을 작성해야합니다. onResume 등은 의미가 없습니다.
Harsh Kanchina

22

안드로이드 라이프 사이클

Android 애플리케이션의 수명주기를 관리하는 7 가지 방법이 있습니다.


다음에 대한 모든 방법에 대한 답변 :

이 메소드들이 어떤 순서로 호출되는지 아는 것이 왜 사용되는지 명확하게하는 데 도움이되는 간단한 시나리오를 보자.

  • 계산기 앱을 사용한다고 가정합니다. 앱을 시작하기 위해 세 가지 방법이 연속적으로 호출됩니다.

onCreate() ---> --->onStart() onResume()

  • 계산기 앱을 사용하면 갑자기 전화가옵니다. 계산기 활동은 배경으로 이동하고 다른 활동은 말합니다. 호출을 다루는 것은 포 그라운드에 있으며, 이제 두 가지 메소드가 연속적으로 호출됩니다.

onPause() ---> onStop()

  • 이제 전화로 대화를 마치고 계산기 활동이 배경에서 전경으로 나오므로 세 가지 방법이 연속적으로 호출됩니다.

onRestart() ---> --->onStart() onResume()

  • 마지막으로 계산기 앱의 모든 작업을 완료했으며 앱을 종료하고 싶다고 가정 해보십시오. 추가로 두 가지 방법이 연속적으로 호출됩니다.

onStop() ---> onDestroy()


활동이 존재할 수있는 네 가지 상태가 있습니다.

  • 시작 상태
  • 실행 상태
  • 일시 중지 된 상태
  • 정지 상태

시작 상태는 다음과 같습니다.

새로운 리눅스 프로세스 생성, 새로운 UI 객체를위한 새로운 메모리 할당 및 전체 화면 설정. 따라서 대부분의 작업이 여기에 포함됩니다.

실행 상태에는 다음이 포함됩니다.

현재 화면에있는 활동 (상태)입니다. 이 상태만으로도 화면에 입력하고 버튼을 터치 및 클릭하는 등의 작업을 처리 할 수 ​​있습니다.

일시 중지 된 상태에는 다음이 포함됩니다.

활동이 포 그라운드에 있지 않고 백그라운드에있는 경우 활동은 일시 정지 상태라고합니다.

중지 된 상태에는 다음이 포함됩니다.

중지 된 활동은 다시 시작해야만 포 그라운드로 구매할 수 있으며 언제든지 파기 할 수도 있습니다.

활동 관리자는 새 활동이 기존 활동에 추가되는 시나리오에서도 사용자 경험과 성능이 항상 최고가되도록 이러한 모든 상태를 처리합니다.


onPause 에서 onResume에 대한 예제는 무엇입니까?
zeeali

14

이 질문과 답변이 마음에 들지만 지금까지 onPostCreate () 또는 onPostResume () 과 같이 자주 사용되지 않는 콜백에 대해서는 다루지 않습니다 . Steve Pomeroy는 https://github.com/xxv/android-lifecycle 에서 이를 포함하여 다이어그램과 Android의 Fragment 수명주기 와 관련되는 방법을 시도했습니다 . 활동 부분 만 포함하도록 Steve의 큰 다이어그램을 수정 하고 레터 크기의 한 페이지 출력을 위해 형식을 지정했습니다. https://github.com/code-read/android-lifecycle/blob/master/AndroidActivityLifecycle1.pdf에 텍스트 PDF로 게시 했으며 아래는 이미지입니다.

안드로이드 활동 라이프 사이클


8

Android 개발자 페이지에서

onPause () :

시스템이 이전 활동 재개를 시작하려고 할 때 호출됩니다. 이것은 일반적으로 저장되지 않은 변경 사항을 영구 데이터에 커밋하고 애니메이션을 중지하고 CPU를 소비 할 수있는 기타 사항 등을 저지르는 데 사용됩니다.이 메소드의 구현은이 메소드가 리턴 될 때까지 다음 활동이 재개되지 않기 때문에 매우 빠릅니다. 활동이 맨 앞으로 돌아 오면 onResume () 또는 사용자에게 보이지 않으면 onStop ()이 뒤 따릅니다.

onStop () :

다른 활동이 재개되어이 활동을 다루고 있기 때문에 활동이 더 이상 사용자에게 보이지 않을 때 호출됩니다. 이것은 새로운 활동이 시작되고 있거나 기존 활동이이 활동의 ​​앞에 가져 오거나이 활동이 파괴 되었기 때문에 발생할 수 있습니다. 이 활동이 다시 사용자와 상호 작용하기 위해 온 경우 onRestart () 또는이 활동이 사라지면 onDestroy ()가 뒤 따릅니다.

이제 세 가지 활동이 있고 A에서 B로 이동하면 A의 onPause가 B에서 C로 호출되고 B의 onPause 및 A의 onStop이 호출됩니다.

일시 정지 된 활동이 재개되고 중지됨이 다시 시작됩니다.

를 호출 this.finish()하면 onPause-onStop-onDestroy가 호출됩니다. 기억해야 할 가장 중요한 것은 : paused Activities는 중지되고 Android는 다른 작업을 위해 메모리가 필요할 때마다 중지 된 활동은 삭제됩니다.

충분히 명확하길 바랍니다.


onPause 방법을 초점을 풀기 시작한 활동과 사용자에게 보이지 않는 마지막 단계와 활동이 사용자에게 완전히 보이지 않는 경우와 같은 Onstop 방법 사이의 중간 단계라고 할 수 있습니다.
Nav

나는 그렇게해야한다고 생각합니다.
Masiar

3
@Nav 활동이 3 개 있고 A에서 B로 이동한다고 가정하면 A의 onPause가 이제 B에서 C로 호출되고 B의 onPause 및 A의 onStop이 호출됩니다.
MKJParekh

3

높은 등급의 답변 위에 더 많은 정보 추가 (KILLABLE의 추가 섹션과 수명주기에서 호출 될 다음 메소드 세트 추가) :

출처 : developer.android.com

여기에 이미지 설명을 입력하십시오

위의 표에서 " Killable "열에 유의하십시오. killable 로 표시된 메소드의 경우 해당 메소드가 프로세스를 호스트 한 프로세스를 리턴 한 후 다른 코드 행을 실행하지 않고도 언제든지 시스템이 활동을 종료 할 수 있습니다.

이 때문에이 onPause()방법을 사용하여 영구 데이터 (예 : 사용자 편집)를 스토리지에 씁니다. 또한 onSaveInstanceState(Bundle)활동을 이러한 배경 상태로두기 전에 메소드 가 호출되어 활동의 동적 인스턴스 상태를 지정된 Bundle에 저장하여 나중에 onCreate(Bundle)활동을 다시 작성해야하는 경우에 수신 할 수 있습니다.

이 글은 영구 데이터를 저장하는 것이 중요합니다 onPause()대신 onSaveInstanceState(Bundle)그 문서에 설명 된대로 그렇게 모든 상황에서 호출되지 않습니다 후자의 라이프 사이클 콜백의 일부가 아니므로.

몇 가지 방법을 더 추가하고 싶습니다. 이들은 수명주기 방법으로 표시되지 않지만 일부 조건에 따라 수명주기 동안 호출됩니다. 요구 사항에 따라 적절한 상태 처리를 위해 응용 프로그램에서 이러한 방법을 구현해야 할 수도 있습니다.

onPostCreate(Bundle savedInstanceState)

활동 시작이 완료된 후 (이후 onStart()및 호출 된 경우) 호출됩니다 onRestoreInstanceState(Bundle).

onPostResume()

활동 재개가 완료되면 ( onResume()호출 된 후 ) 호출됩니다.

onSaveInstanceState(Bundle outState)

상태가 onCreate(Bundle)또는 에서 복원 될 수 있도록 종료되기 전에 활동에서 인스턴스 별 상태를 검색하기 위해 호출됩니다 onRestoreInstanceState(Bundle)(이 메소드로 채워진 번들은 둘 다에 전달됨).

onRestoreInstanceState(Bundle savedInstanceState)

이 메소드는 onStart()여기에 주어진 이전에 저장된 상태에서 활동이 다시 초기화 될 때 호출 됩니다 savedInstanceState.

이 모든 방법을 사용하는 응용 프로그램 코드 :

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private EditText txtUserName;
    private EditText txtPassword;
    Button  loginButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d("Ravi","Main OnCreate");
        txtUserName=(EditText) findViewById(R.id.username);
        txtPassword=(EditText) findViewById(R.id.password);
        loginButton =  (Button)  findViewById(R.id.login);
        loginButton.setOnClickListener(this);

    }

    @Override
    public void onClick(View view) {
        Log.d("Ravi", "Login processing initiated");
        Intent intent = new Intent(this,LoginActivity.class);
        Bundle bundle = new Bundle();
        bundle.putString("userName",txtUserName.getText().toString());
        bundle.putString("password",txtPassword.getText().toString());
        intent.putExtras(bundle);
        startActivityForResult(intent,1);
       // IntentFilter
    }
    public void onActivityResult(int requestCode, int resultCode, Intent resIntent){
        Log.d("Ravi back result:", "start");
        String result = resIntent.getStringExtra("result");
        Log.d("Ravi back result:", result);
        TextView txtView = (TextView)findViewById(R.id.txtView);
        txtView.setText(result);

        Intent sendIntent = new Intent();
        //sendIntent.setPackage("com.whatsapp");
        sendIntent.setAction(Intent.ACTION_SEND);
        sendIntent.putExtra(Intent.EXTRA_TEXT, "Message...");
        sendIntent.setType("text/plain");
        startActivity(sendIntent);
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d("Ravi","Main Start");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d("Ravi","Main ReStart");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d("Ravi","Main Pause");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d("Ravi","Main Resume");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d("Ravi","Main Stop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d("Ravi","Main OnDestroy");
    }

    @Override
    public void onPostCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
        super.onPostCreate(savedInstanceState, persistentState);
        Log.d("Ravi","Main onPostCreate");
    }

    @Override
    protected void onPostResume() {
        super.onPostResume();
        Log.d("Ravi","Main PostResume");
    }

    @Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
        super.onSaveInstanceState(outState, outPersistentState);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
    }
}

로그인 활동 :

public class LoginActivity extends AppCompatActivity {

    private TextView txtView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        txtView = (TextView) findViewById(R.id.Result);
        Log.d("Ravi","Login OnCreate");
        Bundle bundle = getIntent().getExtras();
        txtView.setText(bundle.getString("userName")+":"+bundle.getString("password"));
        //Intent  intent = new Intent(this,MainActivity.class);
        Intent  intent = new Intent();
        intent.putExtra("result","Success");
        setResult(1,intent);
       // finish();
    }
}

출력 : (일시 정지 전)

D/Ravi: Main OnCreate
D/Ravi: Main Start
D/Ravi: Main Resume
D/Ravi: Main PostResume

출력 : (일시 정지 후 재개)

D/Ravi: Main ReStart
D/Ravi: Main Start
D/Ravi: Main Resume
D/Ravi: Main PostResume

참고 onPostResume()가 수명주기 방법으로 인용하지 비록 호출됩니다.


0

위의 답변에 따라 일부 로그를 실행하고 출력은 다음과 같습니다.

활동 시작

On Activity Load (First Time)
————————————————————————————————————————————————
D/IndividualChatActivity: onCreate: 
D/IndividualChatActivity: onStart: 
D/IndividualChatActivity: onResume: 
D/IndividualChatActivity: onPostResume: 

Reload After BackPressed
————————————————————————————————————————————————
D/IndividualChatActivity: onCreate: 
D/IndividualChatActivity: onStart: 
D/IndividualChatActivity: onResume: 
D/IndividualChatActivity: onPostResume: 

OnMaximize(Circle Button)
————————————————————————————————————————————————
D/IndividualChatActivity: onRestart: 
D/IndividualChatActivity: onStart: 
D/IndividualChatActivity: onResume: 
D/IndividualChatActivity: onPostResume: 

OnMaximize(Square Button)
————————————————————————————————————————————————
D/IndividualChatActivity: onRestart: 
D/IndividualChatActivity: onStart: 
D/IndividualChatActivity: onResume: 
D/IndividualChatActivity: onPostResume: 

활동 중지

On BackPressed
————————————————————————————————————————————————
D/IndividualChatActivity: onPause:
D/IndividualChatActivity: onStop: 
D/IndividualChatActivity: onDestroy: 

OnMinimize (Circle Button)
————————————————————————————————————————————————
D/IndividualChatActivity: onPause: 
D/IndividualChatActivity: onStop: 

OnMinimize (Square Button)
————————————————————————————————————————————————
D/IndividualChatActivity: onPause: 
D/IndividualChatActivity: onStop: 

Going To Another Activity
————————————————————————————————————————————————
D/IndividualChatActivity: onPause:
D/IndividualChatActivity: onStop: 

Close The App
————————————————————————————————————————————————
D/IndividualChatActivity: onDestroy: 

내 개인적인 견해로는 두 가지만 시작과 시작에 필요합니다.

onResume은 돌아 오는 모든 인스턴스에 있고, 떠나는 모든 인스턴스에 onPause가있는 것 같습니다 (앱 종료 제외).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.