- LifeCycle
- Life Cycle Why?
프로그램의 실행 상태를 확인하고 이에 적합한 일을 처리해주어야 하는데, 이때 활용되는 것이 생명주기임.
-
- Life Cycle 패러다임
- OnCreate()
- 최초 실행 시에만 해줘야 하는 작업들
- Data Binding
- View 생성
- setContentView와 같은 레이아웃 정의
- OnStart()
- 화면에 진입할 때마다 실행되어야 하는 작업들
- UI를 관리하는 코드를 초기화
- onStop()에서 해제된 리소스 초기화
- OnResume()
- 사용자에게 보이는 동안 실행해야 하는 기능
- onPause()에서 해제된 리소스 초기화
- 화면이 재개된 상태로 전환될 때마다 필요한 다른 초기화 작업
- OnPause()
- Activity가 최상단에 있지 않은 상태(포커스를 잃었을 떄)에 호출됨
- 잠시후 다시 시작할 작업을 일시중지 or 조정
- 배터리 수명에 영향을 미칠 수 있는 리소스 해제 (GPS, Thread, 카메라 미리보기 등)
- 잠깐동안 실행되기 때문에 무거운 작업을 실행하기에는 시간이 부족할 수 있어 부하가 큰 작업은 OnStop() 함수의 사용을 권장
- OnStop()
- Activity가 완전히 가려져 보이지 않는 상태에 호출됨
- 사용자에게 보이지 않는 동안 필요하지 않은 리소스를 해제 or 조정
- 비교적 부하가 큰 저장 작업 (정보 -> 데이터베이스에 저장)
- OnRestart()
- 화면이 가려졌다가 다시 돌아왔을 때에만 호출되는 함수
- OnDestroy()
- Activity가 소멸되기 전에 가장 마지막에 호출되어 정리하는 작업
- 해제되지 않은 모든 리소스를 해제
-
- 어떤 Life Cycle에 어떤 기능을 넣는 것이 올바를까?
- MediaPlayer
MediaPlayer한테 어떤 음악을 재생할 것인지 알려준다.
- SharedPreferences
- 내부 저장소에 데이터를 저장할 수 있게 해주는 것으로, 앱이 종료되었다가 다시 실행되어도 저장된 데이터를 꺼내서 사용할 수 있게 해줌
- 간단한 설정값과 같은 데이터를 저장할 때 유용(ex. 로그인 시 비밀번호)
- Editor
- Json
- 데이터 표현 표준 (Java 객체를 다른 곳으로 전송할 때 해당 포맷을 사용)
- Song 객체를 JSON 포맷으로 변환시켜 한번에 SharedPreferences에 넣어줌
- Gson
- Song 객체를 JSON으로 변환시켜줌 (Java 객체 <-> JSON)
[강의 출처 : 컴공선배]