如何检查应用程序现在是否处于前台或后台?

4

Capacitor提供了一个App插件,允许在应用程序进入后台或前台时获得回调。但是如何在任何时刻获取应用程序的isActive值(即前景/背景状态)?问题在于我在订阅appStateChange事件并且应用程序进入后台或前台之前不知道应用程序的状态。


1
我已向 Capacitor 开发人员报告了一个功能请求:https://github.com/ionic-team/capacitor/issues/2500 - Finesse
2个回答

7
最近添加了一种获取当前状态的方法:added
import {Plugins} from '@capacitor/core';

const {App} = Plugins;

let {isActive} = await App.getState();

这并不适用于Android。如果您有一个启动新Activity的插件,状态将处于非活动状态,并且'appStateChange'事件将被触发。 - zidanex
1
刚刚发现 getState() 返回一个 Promise,所以你需要在异步函数中使用类似 const { isActive } = await App.getState() 的语法或者 App.getState().then(({ isActive }) => {// do your stuff})(使用 "@capacitor/core": "^2.4.7")。 - NathTech

1

感谢您的回复。不幸的是,document.hasFocus()并不总是与应用程序状态匹配。例如:1)当我在iOS上打开最近使用的应用程序列表时,appStateChange被触发,isActive === false,但document.hasFocus()返回true;2)当我在浏览器中聚焦控制台时,appStateChange不会被触发,但document.hasFocus()返回false - Finesse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接