반응형

Activity가 실행 전까지 세가지 메소드

onCreate

onStart

onResume

 

 

onCreate

-반드시 구현되어야 하는 메소드

-(Button, Layout과 같은 View) 초기화

 

onStart

-사용자에게 보여줄 준비가 되었을때 호출

-사용자에게 Activity를 보여주기 위해 필요한 리소스 설정

 

onResume

-실행중

-액티비티가 화면 앞에있고 사용자 포커스를 갖고 있음

-사용자와 상호작용을 처리하기에 좋은 메소드(버튼클릭, Toast메세지)

 

 

Acitivity가 종료되기전 메소드

 

onPause()

-Activity를 떠난다는 첫번째 신호(아직 소멸되지 않음)

-현재변경 사항을 저장할 때 이곳에서 해야한다.

 

onStop

-A화면에서 B화면으로 넘어갔다면 완전히 가려진 상태(백그라운드)

-뒤로가기를 누르면 B화면에서 A화면으로 다시돌가게됨(아직 소멸되지 않음)

 

onDestroy

-소멸되기전에 호출된다.

-액티비티가 받는 마지막 호출

 

package grocery.gohool.lifecycle;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    Button button;

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

        Log.i("onCreate","onCreate");
        Toast.makeText(this, "onCreate", Toast.LENGTH_LONG).show();

        //초기화 여기서.
        button = (Button) findViewById(R.id.button);

    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i("onResume","onResume");
        Toast.makeText(this, "onResume", Toast.LENGTH_LONG).show();

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //메인액티비티 -> 세컨드
                Intent intent = new Intent(MainActivity.this, Second.class);
                startActivity(intent);
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i("onStart","onStart");
        Toast.makeText(this, "onStart", Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.i("onStop","onStop");
        Toast.makeText(this, "onStop", Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i("onDestroy","onDestroy");
        Toast.makeText(this, "onDestroy", Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.i("onPause","onPause");
        Toast.makeText(this, "onPause", Toast.LENGTH_LONG).show();
    }



    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i("onRestart","onRestart");
        Toast.makeText(this, "onRestart", Toast.LENGTH_LONG).show();
    }
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

생명주기를 이해하는 방법은 실행시켜보는 방법이 가장 빠른거같다.

반응형

+ Recent posts