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

김영진·2021년 12월 7일

목적

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

내용

체킹하는법

  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개의 댓글