본문 바로가기

대외활동/UMC

[UMC 2기] Android 파트 5주차 정리

복습 및 정리

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