AppState(应用状态)

AppState可以告诉我们应用当前是在后台运行还是前台运行, 并且能在状态改变的时候通知我们.

AppState 通常在处理推送通知的时候用来决定内容和对应的行为.

App States

更多信息, 请查看Apple's documentation.

基本用法

如果要获得当前的状态, 我们需要使用 AppState.currentState, 这边变量会一直保持更新, 不过在启动的过程中, currentState 可能为 null, 直到 AppState 从原生代码得到通知为止

import React, {Component} from 'react'

import {AppState, Text} from 'react-native'


class AppStateExample extends Component {


  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>

    );

  },

}

上面的例子只会显示"Current state is: active" , 因为应用只有处于 active 状态下才能被用户看到, 而 null 状态只会在一开始的瞬间出现..

方法

 constructor(0)

 addEventListener(type, handler)

添加一个监听函数, 用于监听应用状态的变化, type参数为 change.

TODO: 现在 AppStateNativeEventEmitter 的一个子类, 我们可以弃用 addEventListenerremoveEventListener 或者值使用 addListenerlistener.remove(). 这是一个重大改变, 虽然两个方法和事件的名称不同, 这将是一个突破性的改变(addListener 事件目前是是全局唯一的).

 removeEventListener(type, handler)

删除一个监听函数, type参数为 change.