跳到主要内容
Version: Next

AppState

AppState 能告诉你应用当前是在前台还是在后台,并且能在状态变化的时候通知你。

AppState 通常在处理推送通知的时候用来决定内容和对应的行为。

App States

  • active - 应用正在前台运行
  • background - 应用正在后台运行。用户可能面对以下几种情况:
    • 在别的应用中
    • 停留在桌面
    • [Android] 处在另一个 Activity 中(即便是由你的应用拉起的)
  • [iOS] inactive - 此状态表示应用正在前后台的切换过程中,或是处在系统的多任务视图、通知中心,又或是处在来电状态中。

要了解更多信息,可以阅读 Apple 的文档

基本用法

要获取当前的状态,你可以使用 AppState.currentState,这个变量会一直保持更新。不过在启动的过程中,currentState 可能为 null,直到 AppState 通过 bridge 获取到值为止。

上面的这个例子只会显示"Current state is: active",这是因为应用只有在 active 状态下才能被用户看到。null 状态只会在启动时短暂出现。如果你想尝试这段代码,我们建议使用自己的设备而不是内嵌预览。


文档

事件

change

当应用状态发生变化时触发此事件。监听器会收到当前应用状态值之一作为参数。

memoryWarning
iOS

当应用收到操作系统的内存警告时触发。

focus
Android

当应用获得焦点时触发(用户正在与应用交互)。

blur
Android

当用户不再与应用主动交互时触发。在用户下拉通知抽屉时非常有用。此时 AppState 不会变化,但 blur 事件会被触发。

方法

addEventListener()

tsx
static addEventListener(
type: AppStateEvent,
listener: (state: AppStateStatus) => void,
): NativeEventSubscription;

设置一个在 AppState 上发生指定事件类型时调用的函数。eventType 的有效值参见上方列出的事件。返回 EventSubscription

属性

currentState

tsx
static currentState: AppStateStatus;