본문 바로가기

[Dev] 🎯Self Study

[TEAM PROJECT] 안드로이드 프로젝트 (2) 생명 주기 Life Cycle 이해하기

오늘은 안드로이드 프로젝트에 앞서서..

안드로이드 생명주기에 대해서 이해하는 시간을 먼저 가졌다.

 

가장 중요한!

부분 중 하나이므로, 확실하게 잡고 가는게 좋다는 말에 열심히 공부를 했다.

 

 

[안드로이드] Activity Lifecycle

내 생명주기는 몰라도 안드로이드 생명주기는 알아야하는 이유

velog.io

 

안드로이드 액티비티 생명주기(Life Cycle)

4대 컴포넌트 | 안드로이드 액티비티 생명주기 액티비티는 안드로이드 4대 컴포넌트 중에 하나이다. 그중에서도 UI와 가장 밀접한 관련을 가지고 있기 때문에 사실상 안드로이드 앱에 있어서 가

brunch.co.kr

 

그리고 가장 좋은 것은 공식문서!

즐겨찾기 해놓고 자주 들여다봐야 한다

 

 

활동 수명 주기에 관한 이해  |  Android 개발자  |  Android Developers

활동은 사용자가 전화 걸기, 사진 찍기, 이메일 보내기 또는 지도 보기와 같은 작업을 하기 위해 상호작용할 수 있는 화면을 제공하는 애플리케이션 구성요소입니다. 각 활동에는 사용자 인터페

developer.android.com

 

이제 설명 들은 부분을 줄글로 정리하기


액티비티 & 프레그먼트 


app 실행 순서 예시
1.메인액티비티 2. 로그인 화면으로 이동 
이때 메인 액티비티 라이프 사이클이 중요하다!


액티비티시작 

 

> onCreate() = api나 사용자정보 등 세팅을 불러오는 단계 

> onStart() 화면 불러왔음, 액션 없음 > onResume 실시간으로 액션이 나오는 상태 (중요!)

 ex. 버튼을 누르면 이동한다 이런 액션들이 여기서 처리 
: 즉 우리가 화면을 이동하면 화면이 쌓인다고 보면 되고 (그 위를 덮는다)
이전 단계는 그때 잠깐 정지 onpause 상태에 있는다 


> 그리고 뒤로 가기를 누르면 onResume()으로 다시 돌아가서 실행
: 즉 화면 초기화 x 값이 달라지지 않는다
= 즉 로그인이 되어있는 상태로 계속 유지되어 있는 것이다. (data 초기화 되지 않음)
 


 이게 왜 중요한가?


ex. 송금 신청 > 메인화면으로 돌아가고 > 메인화면에는 송금신청중 아이콘이 뜨게끔 되어 있다

> 근데 얘가 인식을 못한다?

= onCreate()시점에 송금신청이 있기 때문에 갱신처리가 되지 않아서 (화면이 초기화되지 않아서) !

즉 갱신처리를 onResume() 에 넣어야한다. 

액티비티 위에 다른 액티비티가 쌓이면 onpause() > onStop()상태가되고 참조 불가능!
액티비티 위에 다른 프레그먼트가 쌓이면 onPause() 상태로, 참조가 가능하다 

 



프레그먼트가 필요한 이유? 


화면이 덮히는 것이므로 만약 액티비티로만 쌓으면 네비게이션도 페이지마다 또 쌓고... 충돌이 날수도 있음

 

프레그먼트를 쓴다면? 
액티비티의 자식이므로 그 안의 요소(변수)를 다 사용할 수도 있음!  (종속관계)
데이터 이동 등이 매우 간편함
즉 프레그먼트 안에 정보를 적어서 그걸 액티비티에 임시저장한다면 화면전환을 하면서 

자동 저장처리한 것처럼 처리할 수 있음


이때, 안드로이드의 경우 코드 200줄을 안넘는게 좋다!

앱최적화에 적합한 코드(클린코드) 

 

즉 액티비티 하나에 프레그먼트를 다 쌓으면 코드가 200줄은 가볍게 넘으므로, 액티비티를 주제별로 분리하고 그 위에 맞는 프레그먼트를 올리는 것이다.

 

액티비티에 프레그먼트가 종속된다.

 

그외) 

다이얼로그 : 투명한 액티비티이므로 onPause()
바텀시트 : 불투명한 액티비티 따라서 onStop()

요 부분을 유의해서 잘 사용하자.