복습 및 정리
Life Cycle
사용자가 활동을 벗어났다가 다시 돌아왔을 때 활동이 작동하는 방식을 Life Cycle 콜백을 통해 제어할 수 있다.
ex)
- 사용자가 앱을 사용하는 도중에 전화가 걸려오거나 다른 앱으로 전환할 때 비정상 종료되는 문제
- 사용자가 앱을 활발하게 사용하지 않는 경우 귀중한 시스템 리소스가 소비되는 문제
- 사용자가 앱에서 나갔다가 나중에 돌아왔을 때 사용자의 진행 상태가 저장되지 않는 문제
- 화면이 가로 방향과 세로 방향 간에 회전할 경우, 비정상 종료되거나 사용자의 진행 상태가 저장되지 않는 문제
Life Cycle 패러다임
onCreate() - 최초 실행 시에만 해줘야 하는 작업들, Data Binding, View 생성, setContentVeiw와 같은 레이아웃 정의
onStart() - 화면에 진입할 때마다 실행되어야 하는 작업들, UI를 관리하는 코드를 초기화, onStop()에서 해제된 리소스 초기화
onResume() - 사용자에게 보이는 동안 실행해야 하는 기능, 카메라 미리보기(카메라 켜기), onPause()에서 해제된 리소스 초기화, 화면이 재개됨 상태로 전활될 때마다 필요한 다른 초기화 작업
onPause() - 잠시 후 다시 시작할 작업을 일시중지 or 조정, 배터리 수명에 영향을 미칠 수 있는 리소스 해제, GPS, Thread 중지, 카메라 미리보기 정지(카메라 끄기), 액티비티가 최상단에 있지 않을 때(포커스를 잃었을 때) 실행 됨
onStop() - 사용자에게 보이지 않는 동안 필요하지 않은 리소스를 해제 or 조정, 비교적 부하가 큰 저장 작업, 정보를 데이터베이스에 저장, 화면이 완전이 가려졌을 때 호출
onDestroy() - 액티비티가 소멸되기 전에 정리하는 작업, 해제되지 않은 모든 리소스 해제
액티비티가 소멸되는 경우 2가지
1. (사용자가 활동을 완전히 닫거나 활동에서 finish()가 호출되어) 활동이 종료되는 경우
2. 구성 변경(예: 기기 회전 또는 멀티 윈도우 모드)으로 인해 시스템이 일시적으로 활동을 소멸시키는 경우
MediaPlayer
MediaPlayer class can be used to control playback of audio/video files and streams.
미디어 파일을 쉽게 재생시킬 수 있는 클래스
private var mediaPlayer : MediaPlayer? = null // nullable로 받는 이유 : 나중에 mediaPlayer를 해제해줄려고
val music = resources.getIdentifier(song.music, "raw", this.packageName)
mediaPlayer = MediaPlayer.create(this, music) // mediaPlayer 생성
mediaPlayer?.start() // mediaPlayer 시작
mediaPlayer?.pause() // mediaPlayer 정지
mediaPlayer?.release() // mediaPlayer가 갖고 있던 리소스 해제
mediaPlayer = null // mediaPlayer 해제
SharedPreferences
로컬 저장소에서 간단한 데이터(key-value 형태)를 저장할 수 있게 해주는 것
보통 초기 설정값이나 자동 로그인 여부 등 간단한 값을 저장하기 위해 사용
Application에 파일 형태로 데이터를 저장한다.
Application이 삭제되기 전가지 저장한 데이터가 보존된다.
MODE 종류
- MODE_PRIVATE : 생성한 Application에서만 사용 가능
- MODE_WORLD_READABLE : 외부 App에서 사용 가능, But 읽기만 가능
- MODE_WORLD_WRITEABLE : 외부 App에서 사용 가능, 읽기/쓰기 가능
Editor
Interface used for modifying values in a SharedPreferences object.
sharedPrefenceces의 데이터를 조작하려면 editor를 사용해야 함.
ex)
val sharedPreferences = getSharedPreferences("song", MODE_PRIVATE)
val editor = sharedPreferences.edit()
val songJason = gson.toJson(song)
editor.putString("songData",songJason)
editor.apply()
JSON
JSON is an open standard file format and data interchange format that uses human-readable text to store and transmit data objects consisting of attribute–value pairs and arrays.
JSON(JavaScript Object Notation)은 키-값(key-value)로 이루어진 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷이다.
Gson
자바 객체를 Json으로, Json을 자바 객체로 아주 간단하게 변환해주는 라이브러리
사용하려면 gradle에 라이브러리 추가를 해주어야 함
JSON → Object
song = gson.fromJson(songJson, Song::class.java)
Object → JSON
songJson = gson.toJson(song)
참조
https://developer.android.com/guide/components/activities/activity-lifecycle
https://velog.io/@dlrmwl15/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-SharedPreferences
https://maejing.tistory.com/entry/Android-JSON-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-GSON
'대외활동 > UMC' 카테고리의 다른 글
[UMC 2기] Android 파트 7주차 정리 (0) | 2022.05.19 |
---|---|
[UMC 2기] Android 파트 6주차 정리 (0) | 2022.05.08 |
[UMC 2기] Android 파트 4주차 정리 (0) | 2022.04.29 |
[UMC 2기] Android 파트 3주차 정리 (0) | 2022.04.26 |
[UMC 2기] Android 파트 2주차 정리 (0) | 2022.04.24 |