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

IT技术 reactjs native react-native
2021-03-24 23:31:17

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

我怀疑密钥在 AppRegistry 中,但文档有点少。

6个回答

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

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

BackHandler.exitApp();
是的,它不会停止应用程序。
2021-05-24 23:31:17
BackAndroid此后已被弃用BackHandler(参见facebook.github.io/react-native/docs/backhandler.html
2021-05-31 23:31:17
请注意,对于那些希望真正“停止”他们的应用程序的人,这不会“停止”应用程序,或停止运行进程。该应用程序仍在后台运行,用户将返回“桌面”
2021-06-07 23:31:17
它对安卓方面有帮助:)
2021-06-12 23:31:17

我回答这个问题太晚了,但我认为我选择的方式可能会帮助某人,所以我回答这个问题。

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;
}
这是正确的答案!!!它的工作原理与例外情况完全一样。
2021-06-17 23:31:17

今天没有react-native的特定方法来做到这一点。您必须从事物的本机方面完成此操作。

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

尽管没有开箱即用的 react-native 方法来实现这一点,但有一个适合 react-native 无缝衔接的解决方案:请参阅下面的答案以实现本机module/功能以关闭 android 和 ios 应用程序.. .
2021-06-07 23:31:17
这是一个 Android 应用程序,但谢谢,也许我只是将 OK 按钮更改为 Retry 按钮,让用户尝试重新连接或自行退出。感谢您为我节省了 AppRegistry 的实验。:)
2021-06-21 23:31:17

编写一个原生module,在调用时执行以下操作:

IOS:

exit(9);

安卓:

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

...编辑...

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

注意:引用的库使用 GPLv3 许可证(分发软件时必须提供源代码)
2021-05-31 23:31:17
我知道这可能是一些项目的问题......事实上,我正在考虑在下一个版本中将我的项目重新许可给 MIT。无论如何,项目中没有比我上面的回答更多的本机代码,因此人们可以轻松实现自己的module。(只是想尽量鼓励开源)
2021-06-05 23:31:17
@Sagar 哦,很久以前我不记得我是否最终使用了它。但至少在 iOS 中,我认为没有办法让应用程序从应用程序切换器中移除自己。我认为即使它崩溃了,它仍然会在那里并且如果用户切换到它会重新初始化。
2021-06-11 23:31:17
@sudo 是否对此有任何更新,react-native-exit-appreact-native-close-app不是从后台任务列表中删除应用程序?
2021-06-12 23:31:17
这里有一个 MIT 版本:npmjs.com/package/react-native-close-app
2021-06-15 23:31:17

这就是我实现它的方式:

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