如何退出/关闭React Native应用程序?

Nol*_*lan 37 native reactjs react-native

如果我的React Native应用程序无法连接到其后端,我会显示一个带有OK按钮的警报.如果发生这种情况,应用程序继续运行没有任何意义,因此我想在单击按钮时将其关闭.我该怎么做呢?

我怀疑关键是在AppRegistry中,但文档有点不足.

her*_*rtD 58

对于Android,使用BackAndroid退出应用程序:

import React, {
    BackAndroid,
} from 'react-native';

BackAndroid.exitApp();
Run Code Online (Sandbox Code Playgroud)

  • `BackAndroid`已被弃用,以支持`BackHandler`(参见https://facebook.github.io/react-native/docs/backhandler.html) (11认同)
  • 注意那些希望实际"停止"他们的应用程序,这不会"停止"应用程序,或停止进程运行.该应用程序仍在后台运行,用户将返回"桌面" (4认同)
  • 是的,它不会停止应用程序。 (2认同)

Faz*_*shi 33

我太迟回答了这个问题,但我认为我选择的方式可能对某人有帮助,所以我正在回答这个问题.

componentWillMount() {
   BackHandler.addEventListener('hardwareBackPress', this.backPressed);
}

componentWillUnmount() {
   BackHandler.removeEventListener('hardwareBackPress', this.backPressed);
}

backPressed = () => {
  Alert.alert(
    'Exit App',
    'Do you want to exit?',
    [
      {text: 'No', onPress: () => console.log('Cancel Pressed'), style: 'cancel'},
      {text: 'Yes', onPress: () => BackHandler.exitApp()},
    ],
    { cancelable: false });
    return true;
}
Run Code Online (Sandbox Code Playgroud)


WiR*_*iRa 14

编写一个本机模块,在调用时执行以下操作:

IOS:

exit(9);
Run Code Online (Sandbox Code Playgroud)

ANDROID:

((YourApplication) self.getApplicationContext()).kill();
Run Code Online (Sandbox Code Playgroud)

...编辑...

或者只使用我创建的那个:https://www.npmjs.com/package/react-native-exit-app

  • 注意:引用的库使用 GPLv3 许可证(分发软件时必须提供源代码) (2认同)
  • 这里有一个 MIT 版本:https://www.npmjs.com/package/react-native-close-app (2认同)

Ada*_*son 11

今天没有反应原生的特定方式来做到这一点.你必须从本机方面实现这一目标.

此外,你在开发iOS吗?Apple已声明应用程序不应关闭自己.


Led*_*Led 7

这就是我实现它的方式:

  componentWillMount() {
    BackHandler.addEventListener('hardwareBackPress', this.handleBackButtonClick);
  }
  componentWillUnmount() {
    BackHandler.removeEventListener('hardwareBackPress', this.handleBackButtonClick);
  }
  handleBackButtonClick() {
    BackHandler.exitApp();
    return true;
  }
Run Code Online (Sandbox Code Playgroud)


Rom*_*rin 7

这个 npm 模块帮助我解决了同样的问题 - react-native-exit-app

import RNExitApp from 'react-native-exit-app';
...
RNExitApp.exitApp();
...
Run Code Online (Sandbox Code Playgroud)

  • 我使用的是相同的,但它将应用程序保留在后台任务中,它不会被杀死任何想法吗? (2认同)