programing

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

lovejava 2023. 6. 13. 21:51

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

Android 활동의 라이프사이클은 무엇입니까?발음법이 요?onCreate(),onStart(),onResume() 중에 그에도 ( ) 초기중호으며었되출그, 도외에화에 ()onPause(),onStop(),onDestroy() 마지막에 호출되었습니까?

이러한 방법은 언제 호출되며 어떻게 적절하게 사용되어야 합니까?

활동 라이프사이클(Android Developers)에서 확인할 수 있습니다.

여기에 이미지 설명 입력

생성():

활동이 처음 작성될 때 호출됩니다.여기서 보기 만들기, 목록에 데이터 바인딩 등 일반적인 정적 설정을 모두 수행해야 합니다.또한 이 방법은 활동의 이전에 동결된 상태가 포함된 번들(있는 경우)을 제공합니다.항상 시작 시() 뒤에 나옵니다.

다시 시작할 때():

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

시작():

활동이 사용자에게 표시될 때 호출됩니다.활동이 전면에 나타날 경우 계속()에 이어 계속합니다.

재개():

활동이 사용자와 상호 작용을 시작할 때 호출됩니다.이 시점에서 활동은 활동 스택의 맨 위에 있으며, 사용자 입력은 해당 활동 스택으로 이동합니다.항상 onPause() 뒤에 나옵니다.

일시 중지 시():

활동이 백그라운드로 이동하지만 아직 삭제되지 않은 경우 활동 수명 주기의 일부로 호출됩니다.onResume()의 상대입니다.활동 B가 활동 A 앞에서 시작되면 이 콜백이 A에서 실행됩니다.A의 OnPause()가 반환될 때까지 B가 생성되지 않으므로 여기서 긴 작업을 수행하지 마십시오.

온스톱():

사용자가 더 이상 보이지 않을 때 호출됩니다.이후 사용자 활동에 따라 다시 시작(), 파괴() 또는 없음을 받게 됩니다.메모리가 부족한 경우 시스템에 메모리가 부족하여 onPause() 메서드가 호출된 후 작업 프로세스를 계속 실행할 수 없습니다.

파괴():

활동이 삭제되기 전에 받는 마지막 통화입니다.이 문제는 활동이 완료되고 있기 때문에(다른 사용자가 완료()라고 함) 또는 공간 절약을 위해 이 활동 인스턴스를 시스템이 일시적으로 삭제하고 있기 때문에 발생할 수 있습니다.isFinishing() 메서드를 사용하여 이 두 시나리오를 >에서 구분할 수 있습니다.

활동을 처음 로드할 때 이벤트는 다음과 같이 호출됩니다.

onCreate()
onStart()
onResume()

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

onPause()
onStop()

전화 다이얼을 종료하면 다음 이벤트가 호출됩니다.

onRestart()
onStart()
onResume()

로 버튼을 클릭하거나 활동을 끝내려고 하면() 아래와 같이 이벤트가 호출됩니다.

onPause()
onStop()
onDestroy()

활동 상태

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

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

활성 또는 실행 중 - 활동이 활동 스택의 맨 위라고도 하는 전경에 있는 경우 활동이 활성 또는 실행 중인 것으로 간주됩니다.이 작업은 Android Activity 스택에서 가장 우선 순위가 높은 작업으로 간주되며, 이 작업은 장치에서 사용 가능한 것보다 더 많은 메모리를 사용하려고 할 경우 UI가 응답하지 않을 수 있으므로 같은 극단적인 상황에서만 OS에 의해 중지됩니다.

일시 중지됨 - 장치가 절전 모드로 전환되거나 활동이 여전히 표시되지만 새 활동, 비정규 크기 또는 투명 활동에 의해 부분적으로 숨겨져 있는 경우 활동은 일시 중지된 것으로 간주됩니다.일시 중지된 활동은 여전히 활성 상태입니다. 즉, 모든 상태 및 구성원 정보를 유지하고 창 관리자에 연결된 상태로 유지됩니다.이 활동은 Android 활동 스택에서 두 번째로 우선 순위가 높은 활동으로 간주되며, 따라서 이 활동을 중지하는 것이 Active/Running 활동을 안정적으로 유지하고 응답성을 유지하는 데 필요한 리소스 요구 사항을 충족하는 경우에만 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");
    }
}

활동에는 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()
    

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

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] 

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

여기에 이미지 설명 입력

안드로이드 라이프 사이클

Android 응용 프로그램의 수명 주기를 관리하는 7가지 방법이 있습니다.


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

이러한 방법이 어떤 순서로 호출되는지 아는 것이 사용되는 이유를 명확하게 설명하는 데 도움이 되는 간단한 시나리오를 살펴보겠습니다.

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

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

  • 계산기 앱을 사용하고 있는데 갑자기 전화가 걸려옵니다.계산기 활동이 백그라운드로 이동하고 다른 활동이 말합니다.상담 처리가 전면에 나서며, 이제 두 가지 방법이 연속적으로 호출됩니다.

onPause() - - - > onStop()

  • 이제 전화로 대화를 마치자 계산기 활동이 백그라운드에서 시작되어 세 가지 방법이 연속적으로 호출됩니다.

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

  • 마지막으로, 계산기 앱의 모든 작업을 마쳤으며 앱을 종료한다고 가정합니다.두 가지 방법이 연속적으로 호출됩니다.

onStop() - - - > onDestroy()


활동에는 다음과 같은 네 가지 상태가 존재할 수 있습니다.

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

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

새 Linux 프로세스를 만들고, 새 UI 개체에 새 메모리를 할당하고, 전체 화면을 설정합니다.그래서 대부분의 작업이 여기에 관련되어 있습니다.

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

현재 화면에 표시되는 활동(상태)입니다.이 상태만 해도 화면에 입력하거나 버튼을 누르고 클릭하는 등의 작업을 처리할 수 있습니다.

일시 중지 상태는 다음을 포함합니다.

활동이 전경에 있지 않고 배경에 있을 때 활동은 일시 중지 상태라고 합니다.

중지 상태는 다음을 포함합니다.

중지된 활동은 다시 시작하여 포그라운드에서만 구입할 수 있으며 언제든지 삭제할 수 있습니다.

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

저는 이 질문과 답변이 마음에 들지만, 아직까지는 PostCreate()나 PostResume()처럼 덜 자주 사용되는 콜백에 대한 내용은 없습니다.Steve Pomeroy는 https://github.com/xxv/android-lifecycle 에서 이것들과 안드로이드의 프래그먼트 수명 주기와 어떻게 관련이 있는지를 포함한 다이어그램을 시도했습니다.Steve의 큰 다이어그램을 Activity 부분만 포함하도록 수정하고 글자 크기의 한 페이지 인쇄물로 포맷했습니다.https://github.com/code-read/android-lifecycle/blob/master/AndroidActivityLifecycle1.pdf 에 텍스트 PDF로 게시했으며 아래 이미지는 다음과 같습니다.

Android 활동 수명 주기

Android Developers 페이지에서

일시 중지 시():

시스템이 이전 활동을 재개하려고 할 때 호출됩니다.이는 일반적으로 영구 데이터에 저장되지 않은 변경 사항을 커밋하거나 애니메이션 및 기타 CPU를 사용할 수 있는 항목을 중지하는 데 사용됩니다.이 메서드가 반환될 때까지 다음 작업이 다시 시작되지 않으므로 이 메서드를 구현하는 작업은 매우 빨라야 합니다.활동이 다시 앞으로 돌아오면 계속(), 사용자가 볼 수 없게 되면 중지() 중 하나가 계속됩니다.

온스톱():

다른 활동이 다시 시작되어 해당 활동을 포함하고 있기 때문에 사용자가 더 이상 활동을 볼 수 없을 때 호출됩니다.이 문제는 새 활동이 시작되고 있거나 기존 활동이 이 활동 앞에 있거나 이 활동이 삭제되고 있기 때문에 발생할 수 있습니다.이 활동이 사용자와 상호 작용하기 위해 다시 시작()하거나, 이 활동이 사라지면 파괴()합니다.

이제 세 가지 활동이 있고 A에서 B로 이동하면 A의 일시 중지가 B에서 C로 호출되고 B의 일시 중지와 A의 정지가 호출됩니다.

일시 중지된 활동은 다시 시작되고 중지된 활동은 다시 시작됩니다.

에 전화할 때.this.finish()일시 중지-정지-파괴입니다.Android가 다른 작업을 위해 메모리를 필요로 할 때마다 일시 중지된 활동은 중지되고 중지된 활동은 파기됩니다.

저는 그것이 충분히 명확하기를 바랍니다.

Android 활동의 라이프사이클은 무엇입니까?

Android sdk 프레임워크에서 라이프사이클 방법을 갖는 모든 Android Activity(Windows).즉, 사용자가 응용프로그램에 들어갈 때 create() 라이프사이클 방법에 작성된 활동을 볼 수 있습니다.onCreate() 메서드의 창에만 부착된 레이아웃입니다.

활동(창)에는 다음과 같은 수명 주기 상태가 있습니다.

Create - Activity is created. 
Start - Current activity gets started.
Resume - Current activity has been in resumed state.
Restart - Current activity has been in restarted.
Pause - Current activity has been in Paused state.
Stop - Current activity has been in stopped state.
destroy - Current activity has been in destroyed state.

초기화 중에 유사한 발음 방법(Create(), on Start(), on Resume())이 그렇게 많이 호출되고, 마지막에 다른 방법(Pause(), on Stop(), on Destroy()가 그렇게 많이 호출되는 이유는 무엇입니까?

First time user enter into an application:

응용프로그램을 열면 창(활동)이 하나 표시됩니다.onCreate(생성됨) -> onStart(시작됨) -> onResume(재개 상태)가 호출됩니다.

Close the application from background:

응용프로그램을 백그라운드에서 닫을 때 일부 메모리를 확보하기 위해 작업을 삭제해야 합니다.따라서 일시 중지 -> onStop -> onDestroy 메서드가 호출됩니다.

이러한 방법은 언제 호출되며 어떻게 적절하게 사용되어야 합니까?

응용 프로그램을 시작합니다.

사용자가 처음으로 활동 또는 응용프로그램을 시작할 때:

onCreate()

onStart() 

onResume()

안드로이드 스튜디오에서 앱을 실행하는 경우:

onCreate()

onStart() 

onResume()

활동 전환:

첫 번째 활동 -> 두 번째 활동에서 이동할 때:

first_activity  : onPause()

second_activity : onCreate()

second_activity : onStart()

second_activity : onResume()

first_activity  : onStop()

두 번째 활동 -> 첫 번째 활동에서 이동할 때:

second_activity : onPause()

first_activity  : onRestart()

first_activity  : onStart()

first_activity  : onResume()

second_activity : onStop()

second_activity : onDestroy()

개요 버튼:

사용자가 Overview(개요) 버튼(하드웨어 세 번째 버튼 - 최근 목록)을 클릭할 때:

onPause()

onStop()

사용자 개요 버튼(또는)을 해제한 후 사용자가 최근 목록에서 일부 다른 앱으로 이동한 후 애플리케이션으로 돌아갑니다.

onRestart()

onStart()

onResume()

홈 버튼:

사용자가 홈 버튼을 클릭하는 경우:

onPause()

onStop()

사용자가 홈 화면을 검색하고 프로그램 아이콘을 클릭하여 활동으로 돌아갑니다.

onRestart()

onStart()

onResume()

사용자에게 전화가 걸려옴:

사용자가 활동에 있을 때 다음과 같은 전화가 걸려왔습니다.

onPause()

onStop()

사용자가 통화에 참여하지 않으면 자동으로 연결이 끊어지고 활동(통화 누락)으로 돌아갑니다.

onRestart()

onStart()

onResume()

사용자가 통화에 참여하지 않는 경우:

해당 없음 - 라이프사이클이 호출되지 않습니다.

전원 끄기 버튼:

사용자가 버튼의 전원을 끈 경우:

onPause()

onStop()

장치의 잠금을 해제할 때:

onRestart()

onStart()

onResume()

팝업 대화 상자:

팝업 대화상자가 나타나면 - 라이프사이클이 호출되지 않습니다.

장치 다시 시작 또는 끄기:

사용자가 장치를 다시 시작하거나 끄는 경우:

onPause()

onStop()

사용자가 홈 화면에서 앱 아이콘을 클릭하는 경우:

onCreate()

onStart()

onResume()

높은 평가를 받은 답변 위에 추가 정보 추가(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()수명 주기 방법으로 인용되지 않은 경우에도 호출됩니다.

위의 답변에 따라 몇 가지 로그를 실행하면 다음과 같은 출력이 나옵니다.

활동 시작

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은 돌아가는 모든 경우에 있는 것처럼 보이고, 떠나는 모든 경우에 일시 중지됩니다(앱 닫기 제외).

언급URL : https://stackoverflow.com/questions/8515936/android-activity-life-cycle-what-are-all-these-methods-for