액티비티가 객체로 만들어져서 화면에 보여지고 종료되어 메모리에서 사라질때 까지 상황에 따라 자동으로 실행되는 생명주기 콜백(거꾸로 운영체제에세 콜을 나한테 주는 것) 메소드 (주요 6개 메소드)
위 1,2,3 메소드가 실행된 후 액티비티는 실행 중인 상태가 된다 => running 상태
액티비티가 다른 액티비티에 의해 가려진 상태라면 4,5 번 메소드 까지만 발동
두 액티비티 사이를 왔다갔다 하면서 생명주기 확인해보기
package com.bsj0420.ex80activitylifecyclemethod;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
//액티비티 클래스의 라이프사이클 메소드
// 액티비티가 객체로 만들어져서 화면에 보여지고
// 종료되어 메모리에서 사라질때 까지 상황에 따라 자동으로 실행되는
// 생명주기 콜백(거꾸로 운영체제에세 콜을 나한테 주는 것) 메소드 - 주요 6개 메소드
//1. 액티비티가 처츰 메모리에 만들어질 때 자동으로 실행되는 메소드
// 이 메소드가 실행되는 동안에는 어떤 UI도 그려지지않은 상태임
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn).setOnClickListener(view -> {
startActivity(new Intent(this, SecondActivity.class));
});
Log.i("TAG","onCreate");
}
//2. 액티비티의 뷰들이 보이기 시작할 때 자동 호출
// 이메소드 실행중에는 터치해도 동작 안함
// 오래 걸리는 일은 하지 않아야함
@Override
protected void onStart() {
super.onStart();
Log.i("TAG","onStart");
}
//3. 액티비티가 완전히 보이고 터치도 가능한 상태
@Override
protected void onResume() {
super.onResume();
Log.i("TAG","onResume");
}
///////////////////////////////////////////////////////
//위 1,2,3 메소드가 실행된 후 액티비티는 실행 중인 상태가 된다 => running 상태
//4. 어떤 이유에서든 액티비티가 화면에서 안보이기 시작 할 때 자동 실행되는 메소드
//화면에 UI는 보이지만 터치는 되지않음
//보통 이곳에서 스레드를 pause처리함 (게임을 실행 중지 등)
@Override
protected void onPause() {
super.onPause();
Log.i("TAG","onPause");
}
//5. 완전히 화면에서 안보일 때 자동 실행되는 메소드
@Override
protected void onStop() {
super.onStop();
Log.i("TAG","onStop");
}
//액티비티가 다른 액티비티에 의해 가려진 상태라면 4,5 번 메소드 까지만 발동
//////////////////////////////////////////
//6. 폰에 뒤로가기 버튼이나 finish() 메소드로 엑티비티를 종료 했을 때
//액티비티가 메모리에서 소멸될 때 자동으로 실행되는 메소드
//안드로이드의 12버전부터 (api 31) 디바이스부터는
//처음 실행되는 액티비티는 [뒤로가기] 버튼을 눌러도
// finish()되지 않음 -> 속도 개선을 위해서
//만약 뒤로가기 버튼으로 종료하고 싶으면
//온백프레스트메소드를 재정의 하여 finish 하거나
//최신 앱 목록에서 스와이프로 제거
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("TAG","onDestroy");
}
}
package com.bsj0420.ex80activitylifecyclemethod;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Log.i("TAG", "second onCreate");
}
@Override
protected void onStart() {
super.onStart();
Log.i("TAG", "second onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.i("TAG", "second onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.i("TAG", "second onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.i("TAG", "second onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("TAG", "second onDestroy");
}
}