diff --git a/packages/rn-tester/js/examples/AppState/AppStateExample.js b/packages/rn-tester/js/examples/AppState/AppStateExample.js index 54d83415780..ebdfa0e4281 100644 --- a/packages/rn-tester/js/examples/AppState/AppStateExample.js +++ b/packages/rn-tester/js/examples/AppState/AppStateExample.js @@ -12,7 +12,7 @@ const React = require('react'); -const {AppState, Text, View} = require('react-native'); +const {AppState, Text, View, Platform} = require('react-native'); class AppStateSubscription extends React.Component< $FlowFixMeProps, @@ -22,22 +22,43 @@ class AppStateSubscription extends React.Component< appState: AppState.currentState, previousAppStates: [], memoryWarnings: 0, + eventsDetected: [], }; componentDidMount() { AppState.addEventListener('change', this._handleAppStateChange); AppState.addEventListener('memoryWarning', this._handleMemoryWarning); + if (Platform.OS === 'android') { + AppState.addEventListener('focus', this._handleFocus); + AppState.addEventListener('blur', this._handleBlur); + } } componentWillUnmount() { AppState.removeEventListener('change', this._handleAppStateChange); AppState.removeEventListener('memoryWarning', this._handleMemoryWarning); + if (Platform.OS === 'android') { + AppState.removeEventListener('focus', this._handleFocus); + AppState.removeEventListener('blur', this._handleBlur); + } } _handleMemoryWarning = () => { this.setState({memoryWarnings: this.state.memoryWarnings + 1}); }; + _handleBlur = () => { + const eventsDetected = this.state.eventsDetected.slice(); + eventsDetected.push('blur'); + this.setState({eventsDetected}); + }; + + _handleFocus = () => { + const eventsDetected = this.state.eventsDetected.slice(); + eventsDetected.push('focus'); + this.setState({eventsDetected}); + }; + _handleAppStateChange = appState => { const previousAppStates = this.state.previousAppStates.slice(); previousAppStates.push(this.state.appState); @@ -62,6 +83,13 @@ class AppStateSubscription extends React.Component< ); } + if (this.props.detectEvents) { + return ( + + {JSON.stringify(this.state.eventsDetected)} + + ); + } return ( {JSON.stringify(this.state.previousAppStates)} @@ -105,4 +133,13 @@ exports.examples = [ return ; }, }, + { + platform: 'android', + title: 'Focus/Blur Events', + description: + 'In the Android simulator, toggle the notification drawer to fire events.', + render(): React.Element { + return ; + }, + }, ];