Skip to content Skip to sidebar Skip to footer

How To Detect Onresume And Onpause On React Native Es6

How can I detect any method from background to foreground es6? Is this possible in React-native? and is there any class or tool that could help with this type of method?

Solution 1:

Try this, it working for me

importReact, {Component} from'react'import {AppState, Text} from'react-native'classAppStateExampleextendsComponent {

  state = {
    appState: AppState.currentState
  }

  componentDidMount() {
    AppState.addEventListener('change', this._handleAppStateChange);
  }

  componentWillUnmount() {
    AppState.removeEventListener('change', this._handleAppStateChange);
  }

  _handleAppStateChange = (nextAppState) => {
    if (this.state.appState.match(/inactive|background/) && nextAppState === 'active') {
      console.log('App has come to the foreground!')
    }
    this.setState({appState: nextAppState});
  }

  render() {
    return (
      <Text>Current state is: {this.state.appState}</Text>
    );
  }

}

Solution 2:

As an update to the existing answer, removeEventListener(type, handler) has been deprecated (since September 2021):

Use the remove() method on the event subscription returned by addEventListener()

Using class component

importReact, {Component} from'react'import {AppState, Text} from'react-native'classAppStateExampleextendsComponent {

  state = {
    appState: AppState.currentState
  }

  eventListenerSubscription = null;

  componentDidMount() {
    this.eventListenerSubscription = AppState.addEventListener('change', this._handleAppStateChange);
  }

  componentWillUnmount() {
    this.eventListenerSubscription.remove();
  }

  _handleAppStateChange = (nextAppState) => {
    if (this.state.appState.match(/inactive|background/) && nextAppState === 'active') {
      console.log('App has come to the foreground!')
    }
    this.setState({appState: nextAppState});
  }

  render() {
    return (
      <Text>Current state is: {this.state.appState}</Text>
    );
  }
}

Using hooks

importReact, { useState, useEffect } from'react';
import { AppState, Text } from'react-native';

functionAppStateExample() {
  const [appState, setAppState] = useState(AppState.currentState);
  var eventListenerSubscription;

  const_handleAppStateChange = nextAppState => {
    if (appState.match(/inactive|background/) && nextAppState === 'active') {
      console.log('App has come to the foreground!');
    }
    setAppState(nextAppState);
  };

  useEffect(() => {
    //on mount
    eventListenerSubscription = AppState.addEventListener('change', _handleAppStateChange);
    return() => {
      // on unmount
      eventListenerSubscription.remove();
    };
  }, []);

  return<Text>Current state is: {appState}</Text>;
}
exportdefaultAppStateExample;

Post a Comment for "How To Detect Onresume And Onpause On React Native Es6"