如果我的React Native应用程序无法连接其后端,我会显示一个带有“确定”按钮的警告框。如果发生这种情况,继续运行应用程序毫无意义,因此我希望在点击按钮时关闭它。我该如何做到这一点?
我怀疑关键在于AppRegistry,但文档有点不足。
我怀疑关键在于AppRegistry,但文档有点不足。
对于Android系统,使用BackHandler来退出应用程序:
import React, { BackHandler } from 'react-native';
BackHandler.exitApp();
我回答这个问题有点晚,但我认为我选择的方法可能对某些人有所帮助,因此我还是要回答这个问题。
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开发吗?苹果已经声明应用程序不应该关闭自己。
编写一个本地模块,在调用时执行以下操作:
IOS:
exit(9);
安卓:
((YourApplication) self.getApplicationContext()).kill();
...编辑...
或者使用我创建的这个: https://www.npmjs.com/package/react-native-exit-app
react-native-exit-app
和react-native-close-app
无法将应用程序从后台任务列表中移除的更新? - Sagar 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();
...
仅适用于Android 返回键退出
import { BackHandler } from "react-native";
useEffect(() => {
BackHandler.addEventListener("hardwareBackPress",()=>{
BackHandler.exitApp();
});
}, []);
// only works for android
import React, { useEffect } from 'react';
import { BackHandler } from 'react-native';
useEffect(() => {
setTimeout(() => {
BackHandler.exitApp();
}, 2000);
}, []);
你可以在和上都通过抛出异常来关闭应用程序:
const exitApp = () => {
throw {};
}
这会在调试模式下显示错误,但在生产模式下,应用程序将因崩溃而自动退出
BackAndroid
已被废弃,推荐使用BackHandler
(请参见 https://facebook.github.io/react-native/docs/backhandler.html)。在更新代码时,请注意更换。 - BataleonBackHandler
只在Android上起作用。 - instanceof