android – 处理BackHandler

作为RN编程的新手,我正在尝试处理android硬件按钮.但是在屏幕上按下它会导致同时进入上一个屏幕并关闭应用程序.
我的StackNavigator看起来像:

const navigatorApp = StackNavigator({
  Screen1: { screen: Screen1 },
  Screen2: { screen: Screen2 },
  Screen3: { screen: Screen3 },
  Screen4: { screen: Screen4 }
})

我试图对屏幕进行全局背压处理

class HandleHavigation extends React.Component {
  componentwillMount () {
    if (Platform.OS === 'android') return
    BackHandler.addEventListener('hardwareBackPress', () => {
      const { dispatch, nav } = this.props
      if (nav.routes.length === 1 && (nav.routes[0].routeName === 'Screen1')) {
        return false
      }
      dispatch({ type: 'Navigation/BACK' })
      return true
    })
  }
  componentwillUnmount () {
    if (Platform.OS === 'android') return
    BackHandler.removeEventListener('hardwareBackPress')
  }

  render () {
    return <navigatorApp navigation={addNavigationHelpers({
      dispatch: this.props.dispatch,
      state: this.props.nav,
      addListener: createReduxBoundAddListener('root')
    })} />
  }
}
const mapStatetoProps = state => ({ nav: state.reducer })
export default connect(mapStatetoProps)(HandleNavigation)

我也在其他问题解决方案中尝试了一些,但没有任何帮助阻止应用程序关闭.

我还考虑过在每个屏幕上实现backHandler.
在我的应用程序中,每个屏幕都包含函数onPress for top按钮.这就是我尝试使用Backhandler将此操作复制到硬件按钮的原因.但是所有我得到的 – 屏幕回来了,应用程序隐藏在同一时间.

在我的情况下是否有任何解决方案可以通过按hw backbutton来阻止关闭应用程序?

解决方法:

您可以使用BackHandler退出/关闭应用程序:

import { BackHandler } from 'react-native';

BackHandler.exitApp();

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...