-
LifeCycle :
-
life : 시작 ⇒ 종료 / cycle : 주기
-
Life Cycle Why?
: 모바일은 화면이 작기 때문에 어떤 이벤트가 발생할때마다 화면이 가려지게됨
⇒ 생성 되고 소멸되기까지 언제 화면이 생성되고 소멸되는지 체크할 필요가 있음
-
Life Cycle 패러다임
- onCreate()
- 최초 실행 시에만 해줘야 하는 작업들
- Data Binding
- View 생성
- setContentView와 같은 레이아웃 정의
-
onStart()
- 화면에 진입할 때마다 실행되어야하는 작업들
- UI를 관리하는 코드를 초기화
- onStop()에서 해제된 리소스 초기화
-
onResume()
- onStart()실행되고 나서 실행
- 실행되고 나면 액티비티와 사용자가 상호작용하기 시작함 = 정상적 액티비티 실행
- 사용자에게 보이는 동안 실행해야하는 기능
- 카메라 미리보기(카메라 켜기)
- onPause()에서 해제된 리소스 초기화
- 화면이 재개됨 상태로 전환될 때마다 필요한 다른 초기화 작업
-
onPause()
- 이벤트가 발생해서 사용자가 액티비티에서 떠나게 될 경우 (= 해당 액티비티가 현재 최상단에 있지 않게된 = 포커스를 잃게 된 상태 )에서 첫번째 신호로 호출되는 함수
- 잠시 후 다시 시작할 작업을 일시중지 or 조정
- 배터리 수명에 영향을 미칠 수 있는 리소스 해제(예, GPS, 카메라 미리보기 정지 (카메라 끄기))
- Thread 중지
-
onStop()
- 액티비티가 완전히 가려져서 사용자에게 아예 보이지 않는 동안 필요하지 않은 리소스를 해제 or 조정
- 비교적 부하가 큰 저장 작업
- 정보를 데이터베이스에 저장
-
onDestroy()
- 액티비티 소멸전에 마지막으로 호출
- 액티비티가 소멸되기전에 정리하는 작업
- 액티비티 닫거나, 어플종료, finish()호출 등에 해당
- 해제되지 않은 모든 리소스 해제
-
프로세스 종료(시스템에 의한 강제종료 - 근데 이럴일 잘 없음)
- 어떤 Life Cycle에 어떤 기능을 넣는 것이 올바를까?
-
MediaPlayer : 음악 재생(onStart), 액티비티에서 나갈경우 음악정지(onStop)등으로 이용 가능
-
SharedPreferences : 내부저장소에 데이터를 저장할 수 있게 해주는것 ⇒ 앱이 종료되었다가 재실행되어도 이러한 데이터들을 사용할 수 있게 해줌
- 물론 좀 무거운 값들은 데베를 필수적으로 거쳐야겠지만, 로그인 값 기억과 같은 간단한 것들을 구현할 때 sharedPreferences를 사용할 수 있음
- 보통 private으로 사용 (해당 앱에서만 접근 가능하게)
- Editor : sharedPreference를 이용해 데이터 조작시 필요함
- put~()함수를 이용해 값 삽입 가능 / like git에서의 commit
- 속성들을 받아오는건 onCreate가 아니라 onStart에서 : 처음에만 속성값을 받아오는게 아니라 이용할때마다 받아와야 하기 때문에
- editor.apply() 마지막에 꼭 호출 해줘야 실제 저장작업이 완료됨 / like git에서의 push
-
Json : 데이터 표현 표준
- 자바 객체를 다른곳으로 전송할때 Json 포맷으로 전송하게 됨
- 객체를 한번에 넣어줄 수 있음
- Gson사용
-
Gson : Json → 자바 객체, 자바 객체 → Json으로 간단하게 변환시켜줌