본문 바로가기

개발 코딩 정보 공유/안드로이드 자바 코틀린

안드로이드 액티비티 라이프 사이클 알아보기

 

 

 

 

 

 

 

 

 

 

안드로이드 액티비티 라이프사이클

 

안드로이드 개발시 기본이자, 제일 중요한 부분일 수 있는 액티비티의 라이프 사이클 입니다. 뭐든것은 순서가 있듯이...  우리의 액티비티가 생성되는 순간에도 내부에서는 여러가지 일이 생기고 있죠. 매우 간단한 예제를 통해 알아보겠습니다. 각각의 메서드에서 해당문자를 출력하여 라이프 사이클 시점을 알아 보도록 합니다.

 

 

1
2
3
4
08-30 08:09:04.280 8736-8736/com.example.test.mynewapplication I/TAG: ---onCreate---
08-30 08:09:04.305 8736-8736/com.example.test.mynewapplication I/TAG: ---onStart---
08-30 08:09:04.329 8736-8736/com.example.test.mynewapplication I/TAG: ---onResume---
 
cs

 

 

콘솔에 찍힌 순서 입니다. onCreate를 거쳐 start resume 으로 이어지고 비로서 ActivityRunning 상태가 됩니다.그럼 stop과 pause는 언제 호출될까요? 기기의 홈키를 눌러 메인으로 돌아가 보겠습니다.

 

  

1
2
08-30 08:11:36.748 8736-8736/com.example.test.mynewapplication I/TAG: ---onPause---
08-30 08:11:36.919 8736-8736/com.example.test.mynewapplication I/TAG: ---onStop---
cs

 

 

아~ onPause onStop이 순서대로 호출되었네요. onPause의 경우 현재 화면상에 (stack top) 다른 뷰로 인해 가려진다거나 하는 경우 호출됩니다. 완전히 가려버릴경우는 onStop 까지 호출 되죠. 인텐트를 하나 띄워볼까요?

 

onResume에서 액티비티를 하나 띄워봅니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package com.example.test.mynewapplication;
 
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
 
public class ActLifeCycle extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_act_life_cycle);
 
        Log.i("TAG","---onCreate---");
 
    }
 
    @Override
    protected void onStart() {
        super.onStart();
        Log.i("TAG","---onStart---");
    }
 
    @Override
    protected void onResume() {
        super.onResume();
        Log.i("TAG","---onResume---");
 
        Intent i = new Intent(this, BasicWebviewActivity.class);
        startActivity(i);
 
    }
 
    @Override
    protected void onStop() {
        super.onStop();
        Log.i("TAG","---onStop---");
    }
 
    @Override
    protected void onPause() {
        super.onPause();
        Log.i("TAG","---onPause---");
    }
 
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i("TAG","---onDestroy---");
    }
}
cs

 

  

1
2
3
4
5
6
7
8
08-30 08:20:48.249 4577-4577/com.example.test.mynewapplication I/TAG: ---onCreate---
08-30 08:20:48.253 4577-4577/com.example.test.mynewapplication I/TAG: ---onStart---
08-30 08:20:48.264 4577-4577/com.example.test.mynewapplication I/TAG: ---onResume---
08-30 08:20:48.488 4577-4577/com.example.test.mynewapplication I/TAG: ---onPause---
 
  ...
 
08-30 08:20:50.931 4577-4577/com.example.test.mynewapplication I/TAG: ---onStop---
cs

  

  단순하지만 라이프 사이클을 알아야 정상적인? 앱을 만들수 있습니다. ^^;

  끝