如何使用 React Native 检测屏幕解锁?

2024-03-31

有谁知道我可以检测用户何时打开手机的方法吗?据我了解,当设备解锁时(例如输入正确的密码) android.intent.USER_PRESENT 会被广播,但是,我不知道如何使用 React Native 来检测广播。有没有人有办法解决吗?


调查FB(Facebook) 中的 AppState API https://facebook.github.io/react-native/docs/appstate.html

它在 FB 上有 3 个状态,总共 5 个状态。我在 FB 中只看到 3 个,但其他 2 个可能受支持,也可能不支持。

Active- 该应用程序正在前台运行

background- 该应用程序正在后台运行。用户要么在另一个应用程序中,要么在主屏幕上。

inactive- 这是在前台和后台之间转换时以及在不活动期间(例如进入多任务视图或有来电时)发生的状态

看看苹果Docs https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheAppLifeCycle/TheAppLifeCycle.html有关这些的更多信息。

您必须测试当手机处于锁定屏幕时会进入什么状态。我无法告诉你要使用什么状态,因为我从未测试过 api。

正如您从下面的代码中看到的,测试是在条件语句中完成的

 if (this.state.appState.match(/inactive|background/) && nextAppState === 'active') 

我在这里以 facebook 为例,但附上change事件监听器在componentDidMount并删除在ComponentWillUnmount并且代码将根据状态运行。

import React, {Component} from 'react'
import {AppState, Text} from 'react-native'

class AppStateExample extends Component {

  state = {
    appState: AppState.currentState
  }

  componentDidMount() {
    AppState.addEventListener('change', this._handleAppStateChange);
  }

  componentWillUnmount() {
    AppState.removeEventListener('change', this._handleAppStateChange);
  }

  _handleAppStateChange = (nextAppState) => {
    if (this.state.appState.match(/inactive|background/) && nextAppState === 'active') {
      console.log('App has come to the foreground!')
    }
    this.setState({appState: nextAppState});
  }

  render() {
    return (
      <Text>Current state is: {this.state.appState}</Text>
    );
  }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 React Native 检测屏幕解锁? 的相关文章

随机推荐

  • 为 IronPython 实现“智能感知”

    在我的 C 应用程序中 我有一个文本编辑器 允许用户输入 IronPython 脚本 我已经实现了一组可用于 python 环境的 C 类 我现在想实现一个 智能感知 类型的系统 用户输入一个变量名 然后输入一个点 它会提示用户输入可用方法
  • 为什么V8不能优化try-catch-finally?

    为什么 V8 无法优化 try catch finally 块 而其他著名的运行时 SpiderMonkey Chakra 似乎对此没有问题 除了该问题的优先级相对较低之外 没有其他特殊原因 这将在某个时候进行优化 看一下这个 如果您以 v
  • 无法从 .ts 文件导入 .tsx 文件(反之亦然)

    我有一个项目 ts and tsx文件 我正在尝试导入 tsx文件来自 ts文件 像这样 src index ts import WriteEditor from write editor src write editor tsx impo
  • CentOS 5.3 上的 GhostScript - 无法处理 JPXDecode 数据

    我正在尝试让我们的服务器将 PDF 转换为图像文件 它是CentOS 5 3系统 并且已经安装了最新版本的ghostscript 8 70 当我尝试转换 PDF 时 每个页面都会重复出现以下错误 结果是加载空白图像 ERROR Unable
  • 使用 Ruby OpenSSL 下载和读取证书

    我正在尝试弄清楚如何使用 stdlib 中的 OpenSSL 从网址 uri 下载证书 然后在警报应用程序中使用它 目前 我本质上是使用 s client 调用 openssl 可执行文件并解析响应以获取证书 但当我有一个完整的库来处理这个
  • python.exe - FastCGI 进程意外退出

    我已经阅读了有关此问题的所有帖子 在这里和 IIS 论坛上 也将其带到了 Google 上的第二页 但仍然无法让它工作 我想在 Windows Server 2016 上的 IIS 中运行 Flask Python 应用程序 但我不断收到此
  • Javascript eval 在全局范围内?

    是否可以使用 eval 命令在全局范围内执行某些操作 例如 这会导致错误 我知道 with 关键字将设置特定范围 但是是否有全局范围的关键字 或者是否可以定义一个自定义范围来允许它工作
  • 带有特定乳胶模板的 bookdown

    我非常相信 Rmarkdown 和 bookdown 是内容出版的未来 但是一些出版商使用特定的 LaTeX 模板 并且为了提交手稿 他们需要在该精确的模板中使用它 例如 请参阅此施普林格手稿模板 http resource cms spr
  • 如何在面板上预览顶部停靠控件下方插入顶部停靠控件

    我使用 panel controls add 将控件添加到面板 但是 他们插入到它的最顶部 我尝试了 BringToFront 和 SendToBack 方法 但似乎不起作用 有任何想法吗 谢谢 EDIT 我想要的是 它们停靠在容器的顶部
  • 如何将多个 QualifierFilter 应用于 HBase 中的一行

    我们想使用两个 QualifierFilters 过滤 HBase 表上的扫描 意味着我们只想获取表中确实具有特定列 col A 的行AND 某个其他列 col B 我们当前的方法如下所示 FilterList filterList new
  • div 的边框半径问题

    I have a CSS flexbox with a div set on the HTML canvas I want to have a border radius around all four corners I have tri
  • 使用 JavaScript 映射和减少 JSON 对象

    考虑下面这个 JSON 对象 cells count 1 gdp growth avg 1 90575802503285 geo name united states of america time 1990 count 1 gdp gro
  • 使用replace()方法执行FragmentTransaction后,findFragmentByTag()返回null

    我的 Android 应用程序包含三个片段 A B 和 C 它们被加载到定义的两个容器中MainActivity布局 当应用程序启动时 它会显示fragmentA 加载到 left container 中和right container中的
  • 在 Linux 上使用 PyAudio 列出设备

    在 Linux 上列出音频设备时 我尝试使用 Raspbian RaspberryPi import pyaudio p pyaudio PyAudio for i in range p get device count print p g
  • 关于C中数组名和数组地址

    我有以下代码 include
  • 从 Reddit 评论中删除链接

    我正在阅读 reddit 帖子下的评论 有些评论带有链接 我想删除它们 示例 输入 This is a pic https i imgur com yKmUMJD jpg this http www google com is a link
  • 去审查:“复合文字使用无键字段”和嵌入类型

    我有一个简单的结构 type MyWriter struct io Writer 然后我按以下方式使用它 writer MyWriter io Stdout 跑步时go vet这给了我一个composite literal uses unk
  • Laravel 组管理路由

    有没有一种方法可以将所有以admin 我尝试过这样的事情 但它当然不起作用 Route group admin function Route get something array uses gt mycontroller index Ro
  • Android HTTP 调用的随机异常。为什么?

    到目前为止 我正在 3 台设备上测试我的应用程序 Sprint 的 LG Optimus 设备在 https 调用上不会抛出异常 可能一周一次 T Mobile 上的 Nexus S 几乎每小时都会出现这样的内容 读取错误 ssl 0x3f
  • 如何使用 React Native 检测屏幕解锁?

    有谁知道我可以检测用户何时打开手机的方法吗 据我了解 当设备解锁时 例如输入正确的密码 android intent USER PRESENT 会被广播 但是 我不知道如何使用 React Native 来检测广播 有没有人有办法解决吗 调