본문 바로가기

전체 글256

[Android] 안드로이드 백그라운드 작업 (2) - Task 종류 백그라운드의 문제?Background Service는 사용자가 인지할 필요가 없는 작업을 수행함으로 상호작용 하지 않는다.이는 장점 같지만, 앱 입장에서는 성능 저하를 일으킬 만한 특성이다.무분별하게 Background Service가 사용된다면 사용자는 이를 인지하지도 못할 것이고, 이로 인해 디바이스가 과부화 되어 메모리 부족을 겪을 수 있고 심하면 앱이 갑자기 죽는 일들이 일어날 수 있기 때문이다.Background 제한Google은 이 점을 인지하고 Oreo 버전부터 Background Service를 제한시켜버린다. 정확히는 앱이 Closed 상태일 때의 Background Service를 제한한 것이다. 앞으로는 앱이 Background 상태일 때도 Service를 유지 시키려면 Foregro.. 2024. 11. 16.
[Android] 안드로이드 백그라운드 작업 (1) - 개요 안드로이드에서 백그라운드 작업이란?안드로이드에서 백그라운드 작업이란, 애플리케이션이 화면에서 보이지 않는 상태에서도 동작하는 작업들을 말한다. 음악 재생, 파일 다운로드, 위치 정보 수집 등등. 안드로이드에서 백그라운드 작업은 서비스나 브로드캐스트 리시버를 이용해 구현된다.다시 한 번 서비스와 브로드캐스트 리시버를 집고가보자.서비스는 백그라운드에서 실행되는 독립적인 컴포넌트.브로드캐스트 리시버는 시스템에서 발생하는 특정 이벤트를 수신하여 처리하는 컴포넌트.안드로이드에서는 백그라운드 작업이 앱의 성능, 배터리 수명에 영향을 미칠 수 있다는 문제를 알고 있기 대문에 백그라운드 실행을 제한하는 정책을 적용하고 있다. 경우에 따라서는 잘못된 접근 방식을 선택할 경우 Google PlayStore에 애플리케이션이.. 2024. 11. 16.
[Android] 콜백을 코루틴(Coroutine)으로 바꿔보자(SuspendCoroutine/SuspendCancellableCoroutine) 필자는 서버나, 외부 DB가 필요한 Android 프로젝트에 Firebase를 사용하고 있다. Firebase sdk의 경우 Java 코드로 구현되어 있으며, callback을 통해 비동기를 지원하는 것이 특징이다.필자는 이러한 callback을 SuspendCoroutines를 통해 처리하고 있으며, 해당 SuspendCoroutines에 대해 공부한 내용을 포스팅하려고 한다.  SuspendCoroutinesuspendCoroutine은 현재 코루틴을 일시 중단(suspend) 시키고, 현재의 실행 상태(Continuation) 를 외부로 전달하여 직접 재개(resume)하거나 예외 처리할 수 있게 해주는 함수입니다. 다른 suspend함수와 다른 특징은 개발자가, Continuation을 통해 코루.. 2024. 11. 16.
[Android] 코루틴(Coroutine)에서의 작업 취소 코루틴 에서의 작업 취소코루틴의 완벽한 제어를 위해서는 작업을 기다리고, 완료된 작업의 결과를 반환 받아서 처리하는것 뿐만아니라 작업의 취소 까지도 처리할수 있어야 합니다.제어에 사용 되는 Job 클래스 와 Deferred 클래스 에는 코루틴 블록의 작업을 취소하기 위한 cancel() 함수가 존재합니다.다음은 500 밀리초 간격으로 특정 문자열을 1000회 출력하는 코루틴 블록입니다. 이 블록을 시작한 이후 1300 밀리초가 지나면 코루틴을 취소합니다.fun cancellingCoroutineExecution() = runBlocking { val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ... 2024. 11. 15.
[Koin] Koin 정리 Koin은 무엇인가?Koin은 Dagger, Hilt처럼 안드로이드에서 사용되는 대표적인 DI 프레임워크 중 하나로, 순수 코틀린으로 작성되었으며 다른 DI 프레임워크보다 러닝커브가 낮고 경량화되었다.Kotlin DSL로 만들어진 DI Library 여기서 DSL란,Domain Specific Language 의 약어로 특정 분야에 최적화 된 프로그래밍 언어를 뜻한다. (아래에서 더 정리) 즉,Koin은 코틀린 언어에 최적화된 DI 라이브러리 라고 볼 수 있다. 따라서, Koin을 사용했을 때의 장점은 다음과 같다. Kotlin 개발 환경에 도입이 쉽다다른 DI 라이브러리에 비하여(Dagger, Hilt) 러닝 커브가 낮다.Annotation 을 사용하지 않아 Complie 시간이 단축된다.여기서 러닝 .. 2024. 11. 13.
[Hilt] Hilt vs Koin Hilt와 Koin의 비교Dagger2의 경우 적용을 위해 환경을 세팅하는 과정이나 학습에 있어서 러닝커브가 크다. 이로 인해 Dagger2 보다 러닝 커브는 낮지만 Dagger를 기반으로 만들어진 Hilt를 많이 사용하고 있다. 또한 안드로이드 개발시 Kotlin 만을 사용한 프로젝트들이 많아지고 있어 Koin 또한 많이 사용하고 있다. 그래서! Hilt와 Koin 중 어떤 것을 프로젝트에 사용하는 것이 더 좋을지 이 둘의 장단점과 차이에 대해 비교해보자. 먼저, 각각의 장단점에 대해 알아보자.1) Koin - 장점Dagger2나 Hilt 에 비해 러닝커브가 낮다.Koin의 경우 Kotlin DSL로 만들어져 Kotlin 개발 환경에 도입이 쉽다.어노테이션을 사용하지 않아 컴파일 시간이 단축됨. → 어.. 2024. 11. 11.