• Chris Bracken's avatar
    Support inactive, suspending AppLifecycleStates (#10306) · 9452a344
    Chris Bracken authored
    * Rolls the engine to 75c74dc463d56e17be10315cfde409010fd8f90b.
    * Adds framework support for the `AppLifecycleState.inactive` and `AppLifecycleState.suspending` states.
    
    What are the new states?
    ------------------------
    * `AppLifecycleState.inactive` is emitted on iOS only and corresponds to iOS's foreground inactive state. Current iOS state transitions are:
    `resumed` <--> `inactive` <--> `paused`
    
    * `AppLifecycleState.suspending` is currently emitted on Android only and corresponds to the
    transition to Android's stopped state. Current Android state transitions are:
    `resumed` <--> `paused` --> `suspending` --> `resumed`
    
    These transitions may change in future.
    
    This is a breaking change on iOS
    --------------------------------
    
    This changes the semantics of the `AppLifecycleState.paused` state on
    iOS. The behaviour associated with this state is unchanged on Android.
    
    For background on iOS application states see the state transition
    diagram in the [App Programming Guide for iOS](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheAppLifeCycle/TheAppLifeCycle.html#//apple_ref/doc/uid/TP40007072-CH2-SW6).
    
    On iOS, prior to this change, `AppLifecycleState.paused` corresponded to
    a transition to the _foreground inactive_ state. It now corresponds to a
    transition to the _background state_. The newly-added
    `AppLifecycleState.inactive` state now corresponds to entering the
    _foreground inactive_ state, which (currently) has no exact analogue on
    Android.
    
    Briefly, the _foreground inactive_ state is the state entered when
    switching from an app to the app switcher, receiving a phone call, or
    responding to a TouchID request. Apps are permitted to continue
    animating/updating views in this state if desired. From the _foreground
    inactive_ state, the app may transition back to _active_ (e.g., entering
    the app switcher then resuming the app), or to the _background_ state
    (e.g., switching to the home screen or another app).
    
    What to change
    --------------
    If your app does not handle the `AppLifecycleState.paused` state in a
    `WidgetsBindingObserver.didChangeAppLifecycleState` implementation, no
    changes are required.
    
    If you do handle `AppLifecycleState.paused`, you may additionally wish
    to also handle `AppLifecycleState.inactive`. For example, games should
    probably pause on entering the app switcher rather than wait to be
    backgrounded.
    
    More details
    ------------
    For background on Android application states see the state transition
    diagram in the [Android Activity Lifecycle docs](https://developer.android.com/guide/components/activities/activity-lifecycle.html#alc).
    9452a344
binding.dart 23.9 KB