0101011001010111

Android4-3. 액티비티에 생명주기 본문

Kotlin/안드로이드_[입문]앱개발

Android4-3. 액티비티에 생명주기

[진주] 2023. 8. 18. 21:34
728x90
반응형

수업 목표 : 액티비티의 생명 주기를 이해한다.

 

1.액티비티 생명주기

 

실행구조 

: onCreate()를 통해 시작되고, 

> Started(visible)가 되고    //여기서 부터는 화면 실행

>Resumed이 돼서 , 

그러다가 우리가 저번 시간에 second Activity를 호출해 봤잖아요.

그렇게 두번째 Activity가 호출이 되면, 첫번째 Activity는 어디로 가겠어요 ?

(숨어있지롱 ㅋㅋ)

ㄴ 이렇게 숨어있는 상태일 때는 pause상태로 빠짐!

 

그러다가 액티비티가 화면에서 사라지고, finish를 통해 우리가 종료를 시켰잖아요 ? 

그럼 onStop()을 지나서 Destroy()로 종료가 되는거에요.

 

 

▲ 이것을 생명주기라고 한다.

 

생명 주기는 왜 필요할까?

- 그 액티비티가 변하는 상태에 따라서 뭔가 처리해 줘야 될 상황이 발생을 해요.

 

ex) 내가 어떤 앱을 만들었는데, 그 앱이 다른 앱 activity가 호출되고, 화면이 안 보이게 될 경우에, 다운로드 받고 있는 것을 멈춰야한다. 

ㄴ 다운로드 받고 있는 도중에 사용자가 홈버튼을 누를 수도 있고, 다른 앱으로 전환할 수도 있어요 .

 그럼, 백그라운드에서 물론 다운로드 받을 수도 있지만, 그 다운로드 받던 것을 내가 멈춰야 할 수도 있잖아요.

그럴때는 이 pause상태가 돌아왔을 때, 뭔가 처리를 걸어주는거에요.   

ㄴ /// 즉, 뭔가 앱이 중지 되었을때 상태 = pause , 이때 정지상태일 경우 뭘 할지 처리를 해주는 거다. 

 

각각의 이벤트마다,   // 뭐, Resumed, paused, 등등 

뭔가 처리할 상황이 있기 때문에, 

이 Activity 라이플 사이클 (생명주기)이  존재하고 ,

각각 해당되는 상황에 따라서 해당되는 내용을 넣어주면 됩니다.

 


2) 액티비티의 수명

 

 

액티비티의 수명은 : 

onCreate()호출 ~ onDestroy()호출 사이에 있습니다.  // 약간 태어남과 죽음 사이같이 생각하면 될듯

 

onCreate()란? 

ㄴ 최초 실행될때 

 

onDestroy가

ㄴ 마지막에 Activity가 종료 될 때 모든 리소스를 해제하고 생을 마감.(ㅋㅋ)

 

 

3) 액티비티의 화면이 눈에 보이게 되는 Visibility

  • onStart()에서 onStop()호출 사이에 있습니다.
  • 이 기간 중에는 사용자가 액티비티를 화면에서 보고 이와 상호 작용 할 수 있습니다
  • onStop()이 호출되어 새 액티비티가 시작되면 이 액티비티는 더 이상 표시되지 않게 됩니다.
  • 시스템은 액티비티의 전체 수명 내내 onStart() 및 onStop()을 여러 번 호출 할 수 있다.
  • 이때 액티비티는 사용자에게 표시되었다 숨겨지는 상태를 오가게 됩니다.

 

 

 

사용자의 눈에 보이는 것은 Start부터 Stopped까지임.

ㄴ 이기간중에는 사용자가 화면으로 볼 수 있고, 상호작용을 할 수 있다.

 

액티비티가 사용자가 홈버튼을 누르거나 다른액비티티가 호출되거나 하면서 뒤로 사라졌다가 다시 앞으로 나오고 왔다 갔다 반복을 하게 됨.

 


4) 액티비티가 foreground에서 동작하는 구간

  • onResume()에서 onPause()호출 사이를 말합니다.
  • 이 기간 중에는 이 액티비티가 화면에서 다른 모든 액티비티 앞에 표시된다.
  • 사용자 입력도 여기에 집중됩니다.
  • 액티비티는 전경에 나타났다 숨겨지는 전환을 자주 반복할 수 있습니다.
  • 예를 들어, 기기가 절전모드에 들어가거나 대화상자가 나타나면 onPause()가 호출됩니다.

 

이 foreground가 사용자가 화면에 보이는 foreground이고, 뒤로 숨게 되는게 background죠.

 

만약 pause상태에 빠졌을 때, 뭔가 할게 있다 하면 그 Pause상태에 코드를 넣어주면 됩니다.

 

 


 

5) 수명주기 콜백 메소드

  • 액티비티가 생성되면서 해제될 때 까지 액티비티의 상태에 따라서 불려지는 메소드를 라이프 사이클 콜백 메소드라 부른다.
  • 애플리케이션 개발자는 필요한 경우에 해당 콜백 메소드를 재 정의하여 필요한 일을 수행하게 할 수 있습니다.

▼주요 콜백 메소드

onCreate():반드시 구현해야하는 메소드로서 액티비티가 생성되면서 호출됨.

  - 가장중요한 작업은 화면을 setContentView()를 호출하여 설정하는 것 

 

onPause() : 사용자가 액티비티를 떠나고 있을 때 호출됨.

  - 액티비티가 완전히 소멸되는 것은 아니지만 사용자가 돌아오지 않을 수 있기 때문에 그 동안 이루어졌던 변경사항을 저장함

 

 


 

라이프사이클의 모든 주기에는 콜백 메소드가 존재하고, 

그 콜백 메소드에 따라서 코드를 넣어주면 됩니다.

 

 


 

6). 액티비티 전환 시 수명주기 콜백 메소드 호출 순서

  • FirstActivity에서 SecondActivity 시작

 1.FirstActivity의 onPause()

 2.SecondActivity의 onCreate() -> onStart() -> onResume() // Resume : 현재 보이는 상태

 3.FirstActivity의 onStop()

 

  • 단말기의 뒤로가기 버튼 누름

 

1.SecondActivity의 onPause()

2.FirstActivity의 onRestart(), onStart(), onResume()

3.SecondActivity의 onStop(), onDestroy()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형