当应用程序在 React Native Android 中成为后台时如何隐藏当前屏幕

Gus*_*nco 5 android android-activity react-native

我有一个 react-native-init 应用程序,它使用appState来检测应用程序何时进入后台以隐藏用户正在使用的屏幕(例如电子邮件列表),并在它前面放置一个图像直到用户再次调用应用程序前台并进行身份验证。

这是为了防止任何检查当前打开的应用程序的人看到用户在我的应用程序中检查的最后一个屏幕的样子,而是看到图像(如启动画面)。

这可以在 iOS 中轻松实现,因为 iOS 具有三个阶段:

  1. active : 当应用程序在前台使用时。
  2. inactive:当应用程序即将进入后台时。
  3. background:当应用程序已经在后台时。

因此,当应用程序变为inactive 时,组件状态中的标志会发生变化,并显示带有图像的组件而不是当前屏幕。

handleAppStateChange = (nextAppState) => {
    if (nextAppState.match(/inactive|background/)) {
      this.setState({ showSplashScreen: true })
    }
    if (this.state.appState.match(/background/) && nextAppState === 'active') {
      this.setState({ showSplashScreen: false })
    }
  }
Run Code Online (Sandbox Code Playgroud)

但是,android 仅使用active 和 background appStates,因此当它进入后台时,该函数将使用background作为nextAppState调用,并且状态中的标志showSplashScreen更改为 true,但似乎由于应用程序已经处于后台,组件不会对其做出反应状态发生变化,当您检查打开的应用程序列表时,您仍然会看到上次使用的屏幕,该屏幕可能包含敏感数据。

有什么方法可以检测应用程序何时进入后台,以便在进入后台之前可以用图像替换当前屏幕?

F.s*_*.sh 1

查看android应用程序的Activity生命周期,可以查看以下链接

三个阶段可以帮助你

onPause:当活动对用户不可见时调用。

onStop:当活动不再对用户可见时调用。

onResume:当 Activity 再次开始与用户交互时调用。

在此输入图像描述