在之前项目中,在进行返回键退出应用时,应用的代码如下:

componentWillMount(){    if (Platform.OS === 'android')    {        BackHandler.addEventListener('hardwareBackPress', this.onBackAndroid);    }}
componentWillUnmount(){    if (Platform.OS === 'android') {        BackHandler.removeEventListener('hardwareBackPress', this.onBackAndroid);    }}

onBackAndroid = () => {

    const navigator = this.refs.navigator;

    const { navigator } = this.props;

    const routers = navigator.getCurrentRoutes();

    console.log('当前路由长度:'+routers.length);

   if (routers.length > 1) {

        navigator.pop();

        return true;//接管默认行为

  }

     return false;//默认行为

};

可是在后面的项目中,用的是  react-navigation  这个组件,这个组件中没有getCurrentRoutes()这个方法了,所以没办法用上面的代码了。如果我们现在依旧想要达到在主页连续进行两次返回键,则退出APP怎么办呢?如下代码:

componentWillMount() {    if (Platform.OS === 'android') {        BackHandler.addEventListener('hardwareBackPress', this.onBackAndroid);    }}componentWillUnmount(){    if (Platform.OS === 'android') {        BackHandler.removeEventListener('hardwareBackPress', this.onBackAndroid);    }};

上面这一部分依旧不变,

onBackAndroid = () => {    //禁用返回键    if(this.props.navigation.isFocused()){//判断   该页面是否处于聚焦状态        if (this.lastBackPressed && this.lastBackPressed + 2000 >= Date.now()) {            BackHandler.exitApp();//直接退出APP        }else{            this.lastBackPressed = Date.now();            ToastAndroid.show('再按一次退出应用', 1000);//提示            return true;        }    }}

这里,我们用到的是this.props.navigation.isFocused() 的isFocused()这个方法来判断,改页面是否处于聚焦状态,如果是,则进行连续点击两次返回键,退出APP。如果不是,则执行返回操作。

更多相关文章

  1. Android代码中运行shell命令
  2. Android获取cpu和内存信息、网址的代码
  3. Android Studio 配置SVN 及 代码管理
  4. Android命令行测试BT,WIFI,Sensor工作状态
  5. 【Android】Android 9.0 隐藏虚拟按键跟状态栏,除去google搜索栏
  6. Android中拍照、图片、录音、视频和音频功能的方法和代码
  7. 【Android休眠】之Android对PowerKey事件的处理(1)代码流程
  8. Android 系统状态栏一体化
  9. android声音调整源代码分析

随机推荐

  1. Android 源码分析——阅读源码工具选用
  2. Android 绘制一个Loading动画__向图片中
  3. Android怎么实现定时任务及闹钟?
  4. Android 对话框弹出(支持Android 6.0及其
  5. Android Camera从Camera HAL1到Camera HA
  6. 【嗨兴科技】Android(安卓)Studio 3 在导
  7. Android高仿网易云音乐播放界面
  8. 如何在ubuntu10.04环境下编译android
  9. Android listView典型错误分析(经验体会)
  10. Android Handler机制之总目录