在 React Native 中,可以使用 useEffect 钩子函数和 BackHandler API 来实现在安卓手机上点击两次返回键退出 App 的功能,具体如下:
首先,导入 useEffect 钩子函数和 BackHandler API:
import { useEffect } from 'react';
import { BackHandler } from 'react-native';
在组件中使用 useEffect 传入一个空数组 [] 作为第二个参数,用于添加事件监听器
const MyComponent = () => {
useEffect(() => {
const backHandler = BackHandler.addEventListener('hardwareBackPress', () => {
if (backHandlerPressedCount < 1) {
backHandlerPressedCount++;
ToastAndroid.show('再按一次退出应用', ToastAndroid.SHORT);
setTimeout(() => {
backHandlerPressedCount = 0;
}, 2000);
return true;
} else {
backHandlerPressedCount = 0;
BackHandler.exitApp();
return false;
}
});
return () => backHandler.remove();
}, []);
let backHandlerPressedCount = 0;
// 组件的其他代码
};
在上面的示例代码中,我们添加了一个名为 backHandler 的事件监听器,监听硬件返回键的按下事件。当用户第一次按下返回键时,我们使用 ToastAndroid.show 方法显示一个提示,让用户知道需要再次按下返回键才能退出应用。当用户第二次按下返回键时,我们调用 BackHandler.exitApp 方法来退出应用,并返回 false 表示默认行为被取消。最后,我们需要在 useEffect 的返回值中添加一个函数,用于卸载事件监听器,确保在组件卸载时事件监听器被正确卸载,避免内存泄漏。 需要注意的是,我们使用了一个计数器 backHandlerPressedCount 来记录用户按下返回键的次数。如果用户在 2 秒内没有再次按下返回键,计数器会被重置为 0。如果用户在 2 秒内再次按下返回键,计数器会自增 1。当计数器的值为 2 时,表示用户已经连续按下返回键两次,此时我们会调用 BackHandler.exitApp 方法来退出应用。