Android/Background Task5 [Android] Doze모드와 대응 방법 1. 서론 API 버전이 마시멜로우인 23이상부터 Doze모드와 AppStand by의 개념이 도입되었습니다. 안드로이드 앱을 개발하는 개발자라면, Doze모드와 AppStand by를 대처해야한다는 말을 들어봤을 것입니다. 그리고 이를 실제로 대응하면서, 껄끄러웠던 경험이 있었을 것이라고 생각합니다. 필자도 '백그라운드에서 시간을 체크하는 작업', '백그라운드에서 네트워크 통신을 하는 작업'등을 경험을 해봤고, 이번에 'FCM에서 네트워크 통신을 사용'하는 경험을 통해서 Doze모드와 각종 백그라운드 정책에 직면을 했습니다. 그래서 이번 포스팅을 통해서 안드로이드의 백그라운드 제한 작업에 함께 알아보려고 합니다. 2. Doze 모드 (Android 6.0) Doze 모드는 충전기 연결이 되지 않은 배터.. 2024. 11. 16. [Android] WorkManager 사용법 (2) - 심화 WorkManager 의 쉬운 사용법을 넘어 이제는 WorkManager 의 상황을 파악하면서 더 잘 사용하는 방법에 대해 알아봅시다. 이번 포스트 에서는 Android Jetpack 의 아키텍처의 구성 요소인 LiveData 에 대한 사전 지식이 약간 필요합니다.1. 작업 상황 파악작업이 동작하고 완료 되고 더이상 할일이 없다면 좋겠습니다만 아쉽게도 그런 경우는 별로 없습니다.완료 된 작업에 대해 사용자에게 알림을 통보해 주거나, 화면에 표시된 프로그래스바를 감춰야 하기도 하고, 사용자의 선택에 따라 이미 처리중인 작업을 취소 해야 하기도 하고, 다시 새로운 작업을 실행 해야 하기도 합니다.이 경우들을 처리하기 위한 기본은, 현재 내가 추가한 작업의 처리 상태를 파악하는 것입니다.예시와 함께 설명하겠습.. 2024. 11. 16. [Android] WorkManager 사용법 (1) - 기본 WorkManager 의 구성WorkManager API 의 주요 클래스는 WorkManager, Worker, WorkRequest, WorkState 입니다.WorkManager : 처리해야 하는 작업을 자신의 큐에 넣고 관리합니다. 싱글톤 인스턴트로 사용 하기 위해서 내부에 WorkManager 객체를 반환하는 getInstance() 함수가 있습니다. 이 메서드를 통해서 WorkManager 의 인스턴트를 받아 사용합니다.Worker : 추상 클래스 입니다. 처리해야 하는 백그라운드 작업의 처리 코드를 이 클래스를 상속받아 doWork() 메서드를 오버라이드 하여 작성하게 됩니다.doWork() 메서드는 작업을 완료하고 결과에 따라 Worker 클래스 내에 정의된 enum 인 Result 의 값중.. 2024. 11. 16. [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. 이전 1 다음