안드로이드/개념 5

[Android/Kotlin] 브로드캐스트 리시버(Broadcast Receiver) (1) 개념 , 리시버 생성, 리시버 선언

브로드캐스트 리시버 (Broadcast Receiver) 브로드캐스트 리시버란? 시스템이 정기적인 사용자의 플로우 밖 (= 사용중인 앱 바깥)에서 발생하는 event (=Broadcast)를 앱에 전달하도록 지원하는 안드로이드 앱 구성요소이다. 즉, 브로드캐스트 리시버는 시스템이 보내는 브로드 캐스트(=여러 암시적 브로드캐스트) 및 다른 안드로이드 앱이 보내는 브로드캐스트에 앱이 응답할 수 있게 한다. (현재 실행하지 않고 있는 앱의 브로드캐스트 리시버 또한 브로드 캐스트에 반응할 수 있다.) - 예시 브로드캐스트 리시버가 사용될 수 있는 상황은 다음과 같다. 기기가 켜질 때, 앱이 시작되게 하고 싶은 경우. 기기가 켜질 때 (=부팅할 때) 안드로이드 시스템은 ACTION_BOOT_COMPLETED 라는..

[Android/Kotlin] Service (1) Service 개념, 종류, 수명 주기

1. Service 개념 안드로이드 앱 구성요소 중 하나로써 주로 백그라운드에서 오랜시간 작업을 해야할 때 사용할 수 있다. Service는 application과 별개로 독립적인 수명 주기를 갖습니다. 따라서 애플리케이션이 종료 되거나 사용자가 다른 앱으로 전환하더라도 서비스는 대게 종료되지 않습니다. 2.Service 종류 서비스의 종류는 제공하려고 하는 기능에 따라 나뉘어지지만 만약 모든 기능이 필요하다면 동시에 실현 가능하다. '백그라운드 서비스', '포그라운드 서비스', '바인딩 서비스' 모두 하나의 서비스에서 구현할 수 있으며 이는 앱이 제공하고자 하는 기능과 요건에 개발자가 어떤 서비스를 제공할 지 선택해야 한다. 백그라운드 서비스 어플리케이션이 백그라운드에서 오랫동안 작업을 수행해야 할 때..

[Android/Kotlin] Context (1) 일단 간단하게 이해해보기

Context 정의 Android의 핵심으로 뽑히는 Context란 과연 무엇일까? https://developer.android.com/reference/android/content/Context에 언급된 자료에 의하면 Context는 애플리케이션 환경에 대한 광역적인 정보를 갖는 인터페이스. Context는 Android System 의해 구현되는 추상 클래스이다. Context는 애플리케이션의 구체적인 Resource, Classes 뿐 만 아니라 'launching activities', 'broadcasting', 'receiving intents' 등과 같은 애플리케이션 수준의 작업(operations)을 호출할 수 있도록 접근을 허용한다. Context 이해해보기 Context에 대한 정의만..

[Android/Kotlin] Flow 흐름 (2) 예외 파악, 다른 CoroutinContext 실행, Callback 기반 API를 Flow로 변환하기.

예상치 못한 예외 파악하기. 생산자를 구현할 때, 네트워크 요청 및 데이터 베이스의 실시간 업데이트와 같은 작업은 예기치 않은 에러를 발생시킨다. 예를 들어 네트워크 요청이 실패한 경우가 대표적이다. 이러한 예외를 처리하기 위해 '중간 연산자 - catch' 를 사용한다. 소비자 class LatestNewssViewModel(private val newsRepositery:NewsRepositery): ViewModel() { init{ viewModelScope.launch { newsRepositery.favoriteLatestNews .catch{exception -> notifyError(exception)} .collect{favoriteNews -> //update View} } } } 만약..

[Android/Kotlin] Flow 흐름 (1) 기본 개념 및 특징, 생성->수정->수집

Flow 기본 개념 1.필요성 우리가 개발을 하면서 네트워크 요청 또는 데이터베이스 실시간 업데이트와 같이 비동기적으로 진행해야할 작업을 수행할 때가 많다. 이를 위해 우리는 종종 Kotlin의 Coroutine을 활용, suspend 함수를 통해 작업 결과를 비동기적으로 받아올 수 있다. 그런데 우리가 일련의 여러 값을 비동기적으로 반환하려면 어떻게 해야할까? suspend fun getAllListValue() : List {...} // Coroutine Context (?) while(true) 문 내에 지속적으로 요청할 네트워크 작업을 만든다. val latestNews = newsApi.fetchLatestNews() emit(latestNews) : latestNews 값을 데이터 스트림으로..