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


    componentWillUnmount() {
        if (Platform.OS === 'android') {
            this.listener.remove('hardwareBackPress');
        }
    }


    onBackAndroid = () => {
        const navigator = this.refs.navigator;//**************************
        const routers = navigator.getCurrentRoutes();
        console.log('当前路由长度:' + routers.length);
        if (routers.length > 2) {
            navigator.pop();
            return true;//接管默认行为
        } else {
            //到了主页了
            if (this.lastBackPressed && this.lastBackPressed + 2000 >= Date.now()) {
                //最近2秒内按过back键,可以退出应用。
                return false;
            }
            this.lastBackPressed = Date.now();
            ToastAndroid.show('再按一次退出应用', ToastAndroid.SHORT);
            return true;
        }
        // return false;//默认行为


    };

备注:但是WebView需要特殊处理cangoback,也可以在WebView单独注册一个BackHandler!

更多相关文章

  1. Android中重写onBackPressed()方法实现双击退出
  2. 启动android默认浏览器
  3. android studio 实现再按一次返回键退出程序
  4. Android彻底退出应用程序
  5. android 修改AVD的存放位置
  6. Android退出应用最优雅的方式(改进版)
  7. Android里面编写退出主程序的提示代码
  8. android 完全退出程序
  9. android textview 自动链接网址 修改默认点击事件

随机推荐

  1. Android Studio(The Official IDE for An
  2. android Notification 的使用
  3. android 有时候stroke不起作用
  4. android ListView 样式 item样式,条目样式
  5. Android音频可视化
  6. Android应用程序资源
  7. Android开机自启动
  8. 【转】android:windowSoftInputMode属性
  9. Android undefined reference to `stderr
  10. Android 圆形背景shape定义