mirror of
https://github.com/status-im/react-native.git
synced 2025-01-10 17:45:59 +00:00
809f1e97de
Summary: When the AppState module is initialized, it subscribes to the `appStateDidChange` event and sends an async native method call to the AppState native module. There is a small race condition window where the native module can read the current app state as `uninitialized` before calling the JavaScript callback, and then be interrupted by the underlying mechanism to trigger the `appStateDidChange` event. If the `appStateDidChange` event is processed before the JavaScript callback, the resulting value of `AppState.currentState` will be invalid. Fixes Microsoft/react-native-windows#1300 (Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your changes work. Bonus points for screenshots and videos!) I simulated (over-exaggerated) the race condition by injecting "thread sleep" calls in the native method call and the native mechanism for updating the app state. I then ran the AppStateExample in the RNTester and found that the current app state was set to `uninitialized`, as opposed to the expected value of `active`. Once I made this JavaScript change, the over-exaggerated race condition no longer resulted in an invalid app state. Closes https://github.com/facebook/react-native/pull/15499 Differential Revision: D5660620 Pulled By: hramos fbshipit-source-id: 47c0dca75d37f677191c48f2148a72edd9cdd0e2