[야나두] AppLifeCycleState

박경수·2024년 3월 6일
0

앱 라이프 사이클 상태

inactive

앱이 비활성화된 상태. (재난 문자가 생각이 났다)

자세한 설명
iOS 및 macOS에서 이 상태는 포그라운드 비활성 상태에서 실행되는 Flutter 호스트 뷰에 해당합니다. 전화 통화 중일 때, TouchID 요청에 응답할 때, 앱 전환기 또는 제어 센터에 들어갈 때 또는 Flutter 앱을 호스팅하는 UIViewController가 전환 중일 때 앱이 이 상태로 전환됩니다.

출처 - https://api.flutter.dev/flutter/dart-ui/AppLifecycleState.html

paused

백그라운드에만 존재하는 상태.(IO 응답하지 않음)

resumed

일반적인 앱 사용 시점이며, IO 모두 응답.
(최초 앱 실행때는 이벤트 발생 안함)

detached

일반적인 앱 종료 시점.
(화면에 노출되지 않고, IO 미응답, OS View에 없음)

앱 라이프 사이클 - 테스트

상태 업데이트를 위해 아래와 같이 작성했다.


class _MyHomePageState extends State<MyHomePage> with WidgetsBindingObserver {
	...
    
    void initState(){
        WidgetsBinding.instance.addObserver(this);
        /// addObserver는 WidgetsBindingObserver 객체가 필요함. 그래서 with과 함께 지정 (implements로도 작성가능)
    } // 초기 상태값 을 지정

	void dispose() {
	    WidgetsBinding.instance.removeObserver(this); /// 꼭 remove해야 자원 낭비를 막을 수 있다.
    } // 

	void didChangeAppLifecycleState(AppLifecycleState state) {
	  switch(state) {
        case AppLifecycleState.resumed:
          break;
        case AppLifecycleState.detached:
          break;
        case AppLifecycleState.inactive:
          break;
        case AppLifecycleState.hidden: /// 이녀석은 새로생겼는데 enum관련 상태였다.
          break;
        case AppLifecycleState.paused:
          break;
	  }
	}
}
profile
<>{...}</>

0개의 댓글

관련 채용 정보