신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

안드로이드 라이프 사이클 (Life Cycle)

안드로이드에서 라이프 사이클은 크게 5가지 상태로 나눠서 나타난다. (새로운 액티비티, 실행, 일시정지, 중지, 소멸)

 

새로운 액티비티 -> 실행

onCreate() > onStart() > onResume()

위의 순서대로 메소드가 실행

 

실행 -> 일시정지

onPause()

 

일시정지 -> 실행

onResume()

 

일시정지 -> 중지

onStop()

 

중지 -> 실행

onRestart()

onStart()

onResume()

 

중지 -> 소멸

onDestory()

 

위에서 보면 처음 액티비티가 실행될때는 onCreate()가 실행되지만, 재실행을 할때는 onRestart()가 실행되는 것을 알 수 있다.

 

라이프사이클 확인하기

간단한 프로젝트를 통해 라이프사이클의 순서를 알아볼 수 있다. 오버라이드를 통해 onCreate(), onStart(), onResume(), onPause(), onStop(), onDestory() 메소드를 오버라이딩해서 그안에 토스트 메세지를 띄어 본다. 그리고 앱을 실행하여 확인해보면 어떤 메소드 실행되는지 확인 할 수 있으면서, 어떤 순서대로 실행되는지도 알 수 있다.

 

코드

MainActivity.java

package com.tistory.hongku.mylifecycle;

import android.app.Activity;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toast.makeText(this, "onCreate 호출", Toast.LENGTH_SHORT).show();

        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();
        Toast.makeText(this, "onStart() 호출", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onResume() {
        super.onResume();
        Toast.makeText(this, "onResume() 호출", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onStop() {
        super.onStop();
        Toast.makeText(this, "onStop() 호출", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onPause() {
        super.onPause();
        Toast.makeText(this, "onPause() 호출", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Toast.makeText(this, "onDestroy() 호출", Toast.LENGTH_SHORT).show();
    }

}​

 

main_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="화면닫기"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.498" />
</android.support.constraint.ConstraintLayout>
​

 

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기