【发布时间】:2016-04-20 11:48:14
【问题描述】:
如果我的 React Native 应用程序无法连接到其后端,我会显示一个带有 OK 按钮的警报。如果发生这种情况,应用程序继续运行没有意义,所以我想在单击按钮时将其关闭。我该怎么做?
我怀疑密钥在 AppRegistry 中,但文档有点少。
【问题讨论】:
标签: reactjs native react-native
如果我的 React Native 应用程序无法连接到其后端,我会显示一个带有 OK 按钮的警报。如果发生这种情况,应用程序继续运行没有意义,所以我想在单击按钮时将其关闭。我该怎么做?
我怀疑密钥在 AppRegistry 中,但文档有点少。
【问题讨论】:
标签: reactjs native react-native
对于Android,使用BackHandler退出应用程序:
import React, { BackHandler } from 'react-native';
BackHandler.exitApp();
【讨论】:
BackAndroid 已被弃用,取而代之的是BackHandler(请参阅facebook.github.io/react-native/docs/backhandler.html)
BackHandler 仅适用于 Android。
我回答这个问题太晚了,但我认为我选择的方式可能会对某人有所帮助,所以我正在回答这个问题。
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;
}
【讨论】:
今天没有特定的 react-native 方法可以做到这一点。您必须从事物的本机方面完成此操作。
此外,您是在为 iOS 开发吗? Apple 已声明应用程序不应自行关闭。
【讨论】:
编写一个本机模块,在调用时执行以下操作:
IOS:
exit(9);
安卓:
((YourApplication) self.getApplicationContext()).kill();
...编辑...
或者直接使用我创建的:https://www.npmjs.com/package/react-native-exit-app
【讨论】:
react-native-exit-app 和react-native-close-app 的任何更新不会从后台任务列表中删除应用程序?
这就是我实现它的方式:
componentWillMount() {
BackHandler.addEventListener('hardwareBackPress', this.handleBackButtonClick);
}
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress', this.handleBackButtonClick);
}
handleBackButtonClick() {
BackHandler.exitApp();
return true;
}
【讨论】:
这个 npm 模块帮助我解决了同样的问题 - react-native-exit-app
import RNExitApp from 'react-native-exit-app';
...
RNExitApp.exitApp();
...
【讨论】: