App Lifecycle in Flutter (생명주기)

도원·2022년 2월 21일
0

용어집

목록 보기
2/2

Flutter App의 생명주기

요즘 참 많은걸 느끼고 있다. Flutter에 대해서 어느정도 알고 있다고 생각을했는데, 사실은 그게 아니었다. 앞으로는 사용을 하더라도 용어를 확실하게 알고 사용하는 습관을 만들어야 겠다.

Flutter App Lifecycle은 아래와 같이 4가지의 형태로 구분이 된다. 실제로 나는 많이 사용하고 있는 기능이다. (저게 생명주기인걸 몰랐지... 멍청아!)

  • detached : 응용 프로그램이 플러터 엔진에 호스팅이 되었지만, 모든 뷰에서는 분리된 경우를 말한다. 엔진은 시작이 됐지만 아직 어떠한 뷰에도 연결이 되지 않았거나, 뷰가 Navigator Pop에 의하여 파괴 되었을 때의 상태이다.

  • inactive : 응용 프로그램이 비활성 상태이며 사용자의 어떠한 입력도 수신하지 않는 경우이다. 두 플랫폼(Android, iOS) 모두 전화 통화를 할 때 해당 상태에 들어가게 된다. 해당 상태에서의 앱은 언제든 Pause(일시정지) 상태가 될 수 있다고 가정을 해야 한다.

  • paused : 사용자가 홈버튼 등을 눌러서 앱이 백그라운드 상태로 내려간 경우를 말한다. 즉, 사용자가 어플리케이션의 UI를 확인할 수 없는 경우이다.

  • resumed : 어플리케이션이 포그라운드 상태에 있는 경우를 말한다. 응용프로그램이 사용자에게 보여지고 사용할 수 있는 상태이다.


현재 앱의 상태를 보고싶다면 WidgetsBindingObserver 를 추가하고 didChangeAppLifecycleState 를 오버라이딩 하여 확인할 수 있다.

  • 코드
class _MyHomePageState extends State<MyHomePage> with WidgetsBindingObserver {
  AppLifecycleState _appLifecycleState;

  
  void didChangeAppLifecycleState(AppLifecycleState state) {
    setState(() {
      _appLifecycleState = state;
    });
    
    print('AppLifecycleState state:  $state');
  }

}
profile
developer

0개의 댓글