- Total
꿈꾸는리버리
Ourday - Widget이 하루가 지나도 갱신이 안되는 문제 해결 본문
🔧 문제 상황
출시하고 2-3일부터 이렇게 위젯이 갱신이 안된다는 보고를 받았다.
분명 위젯을 만들 때 updatePeriodMillis으로 갱신이 되도록 설정을 했었는데 말이죠....?! 우선 시험 주간이라 죄송하다는 멘트와 함께 문제가 되는 기기의 원인을 찾기 위해서 질문들 받았다.
iOS의 경험상 특정 버전 이상인 경우 문제가 발생했을 거라 생각했다.
💬 고민 Point
좀 더 알아보니 Android 12 (API 31) 이상부터는 배터리 최적화 및 백그라운드 제한 정책이 강화되어 updatePeriodMillis 값이 30분(1800000ms) 미만이면 거의 무시된다고 한다. 그래서 문의가 왔던 S23, S24, Z플립4/5 등은 모두 Android 13~15이므로 갱신이 되지 않았던 것이었다.
그래서 고민을 해봤다.
1. updatePeriodMillis을 그대로 사용하되, 30분마다 업데이트를 하도록 변경
이럴 경우에는 위젯이 정확히 매 시 정각이나 30분 단위에 딱 맞춰서 갱신되는 것이 아니라, 사용자가 위젯을 설치하거나 디바이스가 재부팅된 시점부터 30분 간격으로 갱신이 시작된다.
즉, 예를 들어 사용자가 오전 10시 17분에 위젯을 추가했다면, 그때부터 30분 주기로 (10:47, 11:17, 11:47, ..) 갱신되는 방식
따라서 12시 29분..이 되어야 디데이 날짜가 올라가는 문제가 발생할 수 있다.
2. updatePeriodMillis가 아닌 다른 방법을 찾아 자정에만 갱신을 하도록 구현하기
항상 그랬듯 사용자가 편하기 위해서는 개발자가 더 많이 개발해야 한다.
그래서 2번을 택했고 구현을 하게 되었다.
Strategies to Refresh Android Widgets
In native Android applications, widgets are very popular. They provide a way to interact with users without actually launching the…
medium.com
How to reliably update widgets on Android | Arkadiusz Chmura
The default solution with android:updatePeriodMillis doesn’t always work.
arkadiuszchmura.com
이 블로그들에서 보면 아는 것처럼, 또 공식문서에서 나와 있는 것처럼 WorkManager라는 녀석을 쓰게 되었다.
WorkManager로 해결하기로 했다.
앱 아키텍처: 데이터 영역 - WorkManager로 작업 예약 - Android 개발자 | App architecture | Android Devel
데이터 영역 라이브러리에 관한 이 앱 아키텍처 가이드를 통해 지속적인 작업 유형과 기능 등을 알아보세요.
developer.android.com
WorkManager | Jetpack | Android Developers
이 페이지는 Cloud Translation API를 통해 번역되었습니다. 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. WorkManager WorkManager API를 사용하면 안정적으로 실행해야
developer.android.com
'오뚝이 개발자 > 안드로이드' 카테고리의 다른 글
Ourday - Widget 반응형 UI 만들기 (0) | 2025.05.21 |
---|---|
Ourday - Widget 45초 내 업데이트시 반영 안되는 이슈 해결 (0) | 2025.05.16 |
compose - Widget에서 커스텀 폰트 쓰기 !! (0) | 2025.05.15 |
Compose - 키보드 닫기 (0) | 2025.05.14 |
compose - Widget with Glance (0) | 2025.05.12 |