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

时间:2016-01-14 23:21:32

标签: reactjs native react-native

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

我怀疑密钥是在AppRegistry中,但文档有点不足。

7 个答案:

答案 0 :(得分:53)

对于Android,请使用BackAndroid退出App:

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

BackAndroid.exitApp();

答案 1 :(得分:24)

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

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;
}

答案 2 :(得分:11)

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

IOS:

exit(9);

ANDROID:

((YourApplication) self.getApplicationContext()).kill();

<强> ...编辑...

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

答案 3 :(得分:9)

今天没有反应原生的特定方式来做到这一点。你必须从原生的角度来实现这一目标。

此外,您是否正在为iOS开发? Apple已声明应用程序不应自行关闭。

答案 4 :(得分:2)

这就是我取得的成就:

  componentWillMount() {
    BackHandler.addEventListener('hardwareBackPress', this.handleBackButtonClick);
  }
  componentWillUnmount() {
    BackHandler.removeEventListener('hardwareBackPress', this.handleBackButtonClick);
  }
  handleBackButtonClick() {
    BackHandler.exitApp();
    return true;
  }

答案 5 :(得分:1)

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

    file = sys.argv[1]
    if os.path.exists(file):
        with open(file,'r') as inputFile:
            i = 0
            output = BytesIO()
            for line in inputFile.readlines():
                if (re.search("^[0-9]+\.",line)):
                    i += 1
                    replacement = str(i)+'. '
                    newLine = re.sub('^[0-9]+\.\s*(\[?[0-9]*\]?\s*)*',replacement,line)
                    output.write(newLine)
                else:
                    output.write(line)

            print ("Number of steps:", i)

        with open(file,'w') as inputFile:
            inputFile.write(output.getvalue())

答案 6 :(得分:-5)

  

在终端上,您可以按

> ctrl+c
  

或者您可以简单地杀死所有节点

> killall node