AOS

생명주기

asu2880 2020. 1. 30. 01:14

액티비티의 생명주기

함수는 입력을 받아 출력을 하고, 프로그램은 실행을 하면 끝이있듯이 액티비티 또한 생성부터 소멸까지 생명주기(Lifecycle)가 존재 합니다. 

Activity 클래스는 생명주기와 관련된 몇가지 콜백 메소드를 갖습니다. 이러한 콜백을 통해 개발자가 액티비티가 어떻게 동작할 것인지, 사용자가 이 액티비티를 떠난다면 어떻게 할것인지, 다른 화면으로 갔다가 다시 이 액티비티로 진입하면 어떻게 할것인지에 대한 처리를 할 수 있습니다.

 

onCreate()

액티비티가 최초 생성될때 한번만 호출 됩니다. 대부분 액티비티의 초기설정을 이곳에서 하게 됩니다. setContentView(int)를 하여 액티비티의 UI를 구성하고, findViewById(int)를 통해 뷰를 조작하고 상호작용하게 됩니다. 만약 액티비티가 재생성되는경우 이전상태값을 저장한 번들 객체가 전달됩니다.

 

onStart()

액티비티가 사용자에게 보이기 직전에 호출 됩니다.

 

onResume()

액티비티가 사용자와 상호작용을 하기 직전에 호출됩니다. 애니메이션을 시작하거나 카메라와 같은 장치를 실행할 때 좋은 시작점이 될 수 있습니다.

 

onPause()

다른 액티비티의 호출로 해당 액티비티가 백그라운드로 진입할때 호출됩니다. 애니메이션을 포함한 여러가지 CPU를 소모하는 작업들을 중단 시킬때 이곳에서 하면 적절합니다. 이 메서드는 무슨 일을 하든 빨리 끝내야 합니다. 왜냐하면 이 메소드가 리턴되기 전까지는 다음 액티비티가 실행되지 않기 때문입니다.

 

onStop()

액티비티가 더 이상 화면에 나오지 않습니다

 

onDestroy()

액티비티가 소멸되기 전에 호출됩니다. 개발자가 finish()메소드를 호출해서 종료가 될 수도 있고, 시스템이 메모리를 확보하기 위해 액티비티를 일시적으로 종료시키는 것일 수도 있습니다. 이와 같은 두가지 시나리오는 isFinishing()메소드를 통해 구분할 수 있습니다.

 

onRestart()

액티비티가 중단 되었다가 다시 시작되기 직전에 호출됩니다. 이 뒤에는 항상 onStart() 가 호출 됩니다.


 

 	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.e(TAG,"onCreate");
        // 액티비티가 생성되는 중
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.e(TAG,"onRestart");
        //액티비티가 중단되었다가 다시 시작
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.e(TAG,"onStart");
        //액티비티가 화면에 나타나기 시작
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.e(TAG,"onResume");
        //액티비티가 화면에 나타나고 상호작용이 가능해짐
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.e(TAG,"onPause");
        //다른 액티비티가 시작되려함, 이 액티비티는 중단되려하고 백그라운드로 들어갑니다.
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.e(TAG,"onStop");
        //액티비티가 더 이상 화면에 나타나지 않음,중단된 상태
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.e(TAG,"onDestroy");
        //액티비티가 종료되려고 합니다.
    }
728x90
반응형