타이머를 만들고 있는데 앱이 백그라운드로 갔다가 다시 포그라운드로 와도 타이머가 정상 작동하게 만들기 위해서 리서치를 진행하였다.
class RankingSetupPage extends StatefulWidget {
class _RankingSetupPageState extends State<RankingSetupPage> with WidgetsBindingObserver {
void initState() {
WidgetsBinding.instance!.addObserver(this);
super.initState();
}
void dispose() {
WidgetsBinding.instance!.removeObserver(this);
super.dispose();
}
void didChangeAppLifecycleState(AppLifecycleState state) {
switch (state) {
case AppLifecycleState.resumed:
print("app in resumed");
break;
case AppLifecycleState.inactive:
print("app in inactive");
break;
case AppLifecycleState.paused:
print("app in paused");
break;
case AppLifecycleState.detached:
print("app in detached");
break;
}
}
안드로이드에서 어플을 백그라운드로 내렸다가 포그라운드로 올릴때의 라이프사이클은 아래와 같다.
- 포그라운드 >>> 백그라운드시 : inactive >>> pause
- 백그라운드 >>> 포그라운드시 : resumed
리서치를 더 해보니- Back키를 눌러 앱을 종료했을 경우 : inactive >>> pause >>> detached
resumed 상태일때를 활용하면 목적을 달성할 수 있을것으로 보인다.