일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 테스트 자동화
- Android
- junit
- RxKotlin
- SwiftUI Tutorial
- google play
- Animation
- 인앱결제
- MediaPlayer
- databinding
- MotionLayout
- liveData
- SWIFTUI
- list
- Android 13
- node
- mvvm
- GCP
- android13
- 동영상
- rx
- PagingLib
- node.js
- Observable
- Koin
- mysql
- paging
- Reactive
- MediaSession
- Kotlin
- Today
- Total
봄날은 갔다. 이제 그 정신으로 공부하자
Android 백그라운드 처리 가이드 본문
모든 Android 앱에는 측정 뷰와 그리기 뷰를 포함한 UI 처리, 사용자 상호작용 조정 및 수명 주기 이벤트 수신을 담당하는 기본 스레드가 있습니다. 이 Thread에서 작업이 너무 발생하면 앱이 멈추거나 느려진 것 같아 원치 않은 사용자 경험을 초래할 수 있으므로 비트맵 디코딩, 디스크 액세스 또는 네트워크 요청 수행과 같은 장기 실행 계산과 연산은 별도의 백그라운드 Thread에서 수행해야 합니다.
즉, 일반적으로 몇 밀리초 이상 걸리는 작업은 백그라운드 Thread에 위임해야 합니다.
android 백그라운드 처리 작업은 Thread, AlarmManager, Service, Broadcast Receiver 등을 사용해 처리하였지만 너무 많은 앱 들이 서로 다른 방식으로 백그라운드 처리 작업을 하면서 단말의 성능 및 배터리 소모에 많은 악영향을 발생시켰습니다.
해당 글에서는 개발자가 백그라운드 처리 작업이 필요한 경우, 작업의 특성에 따른 적절한 솔루션을 선택하는 방법에 대해 가이드 합니다.
백그라운드 처리 문제
앞서 언급한 것과 같이 백그라운드 작업은 RAM, 배터리 같은 기기의 제한된 리소스를 소모하는데, 백그라운드 작업이 제대로 처리되지 않으면 제한된 리소스의 부족 문제를 야기시킵니다.
Android 시스템은 배터리 수명을 최대화하고 양호한 앱 동작을 보장하기 위해 앱 또는 포그라운드 서비스 알림이 사용자에게 표시되지 않을 경우, 백그라운드 작업을 제한합니다. (자세한 내용은 아래 표 참고)
작업에 적합한 솔루션 선택
백그라운드 작업을 적절히 수행하기 위해서는 처리하려는 작업에 어떤 솔루션이 적합한지 파악하는 것이 우선시 되어야 합니다.
이에 Android에서는 아래와 같은 백그라운드 작업 솔루션 선택 가이드를 제공합니다.
- 작업을 연기할 수 있는가? 아니면 즉시 수행해야 하는가?
- 작업이 시스템 조건에 영향을 받는가?
- 정확한 시간에 작업을 실행해야 하는가?
작업별 적절한 솔루션은?
'Android jetpack' 카테고리의 다른 글
Paging Library - Overview (0) | 2020.11.24 |
---|---|
WorkManager 알아보기 (0) | 2020.11.23 |
의존성 주입 라이브러리 - 2편 (Dagger Hilt) (0) | 2020.11.23 |
의존성 주입 라이브러리 - 1편 (koin) (0) | 2020.11.23 |
DataBinding을 사용해 앱을 더 심플하게 개발하기 (0) | 2020.11.23 |