앱_종료_상황에서_WorkManager_테스트하는데_동작을_하지_않는다 - boostcampwm-2024/and04-Nature-Album GitHub Wiki

문제

WorkManager는 로그인 상태에서 동작하고 비회원일 땐 동작하지 않아야 하기에 로그인 성공한 시점에 한 번 등록하게 구현하였다.

다만 테스트를 위해 Application에서 WorkManager를 등록하여 테스트를 하던 도중 발생한 문제이다.

처음 나의 예상은 앱을 실행 > 특정 시간에 작업 수행이었고 앱을 킨 상태에서는 문제 없이 동작하였다.

그러나 WorkManager를 쓰는 이유, 앱이 종료 된 상태에서도 돌아가야 한다.

따라서 앱을 실행하여 WorkManager에 등록 후 앱을 종료하고 트리거 시간까지 기다려보았다.

당연히 동작하지 않아서 로그를 찍어보았는데 특정 시간이 되면 다시 WorkManager를 등록하여 기존의 작업이 취소되는 문제가 있었다.


원인 분석

여기서 유추할 수 있는 부분은 앱이 종료된 상태에서 WorkManger가 트리거 시간에 작업을 수행할 때 Application을 실행한다는 것

실제로 앱이 종료된 상태에서 트리거 시간이 되면 Application에서 등록할 때의 로그가 IDE에 찍혔었다.

image

Application에서 WorkManager 등록 > 앱 종료 > 트리거 시간 > Application 실행 > 다시 등록 > 기존 작업 취소


결과

위와 같은 이유로 Application이 아닌 MainActivity에서 등록을 시켜주니 문제 없이 앱이 종료 된 상황에서도 작업이 수행되었다.