[Flutter] 플러터앱 포그라운드, 백그라운드 상태체크 하는법

김영진·2021년 12월 7일
1

목적

타이머를 만들고 있는데 앱이 백그라운드로 갔다가 다시 포그라운드로 와도 타이머가 정상 작동하게 만들기 위해서 리서치를 진행하였다.

내용

체킹하는법

  1. stl 위젯을 stf위젯으로 변경한다
class RankingSetupPage extends StatefulWidget {
  1. with WidgetsBindingObserver 를 상속해준다
class _RankingSetupPageState extends State<RankingSetupPage> with WidgetsBindingObserver {
  1. initstate에 옵저버를 연결해준다

  void initState() {
    WidgetsBinding.instance!.addObserver(this);
    super.initState();
  }
  1. dispose에 옵저버를 제거해준다.
 
  void dispose() {
    WidgetsBinding.instance!.removeObserver(this);
    super.dispose();
  }
  1. didChangeAppLifecyleState를 활용하여 라이프라이클을 체크한다.

  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 상태일때를 활용하면 목적을 달성할 수 있을것으로 보인다.

profile
2021.05.03) Flutter, BlockChain, Sports, StartUp

0개의 댓글