react native Android返回键监听BackHandler
根据文档,BackHandler可以监听Android设备的返回键,在iOS设备不起作用。
BackHandler有三个方法:
exitAPP(),
addEventListener(eventName, handler),
removeEventListener(eventName, handler).
运用BackHandler可以实现按下返回键时不退出APP,而只是返回导航栈的上一页。
在定义导航栈navigator的地方添加代码:
添加事件监听函数:
componentWillMount() { if (Platform.OS === 'android') { BackHandler.addEventListener('hardwareBackPress', this.onBackAndroid); } } componentWillUnmount() { if (Platform.OS === 'android') { BackHandler.removeEventListener('hardwareBackPress', this.onBackAndroid); } }
定义监听函数:
onBackAndroid = () => { const routers = nav.getCurrentRoutes(); if (routers.length > 1) { nav.pop(); return true; }else{ let time = new Date(); this.lastBackPressed = this.thisBackPressed; this.thisBackPressed = time.getTime(); if (this.lastBackPressed && this.lastBackPressed + 2000 >= this.thisBackPressed) { //最近2秒内按过back键,可以退出应用。 return false; } ToastAndroid.show('再按一次退出应用', ToastAndroid.SHORT); return true; } };