如果我的React Native应用程序无法连接到其后端,我会显示一个带有OK按钮的警报。如果发生这种情况,应用程序继续运行没有任何意义,因此我想在单击按钮时将其关闭。我该怎么做?
我怀疑密钥是在AppRegistry中,但文档有点不足。
答案 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