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 ;
+ },
+ },
];