gpt4 book ai didi

ios - 当应用程序在后台时更新 iOS Cordova WebView

转载 作者:行者123 更新时间:2023-11-29 02:43:59 30 4
gpt4 key购买 nike

我正在构建适用于 iOS 和 Android 的应用。该应用程序有一个 JavaScript 计数器,它每秒更新一次时间。当我在 Android 中按下主页按钮然后我回来时,计数器是正确的,它会在应用程序处于后台时更新,但 iOS 不会。

有没有办法让iOS在后台更新WebView?

更新计数器的示例 JS 代码:

setInterval(){
$('#div').html(counter);
counter -= 1;
}, 1000);

最佳答案

恐怕在 iOS 上的后台模式下确实不可能实现这一点。

正如 @Hanh-le 提到的,从您将应用发送到后台后,iOS 将在大约 10 秒内停止(暂停)您的应用。
只有一些 native 功能(服务)可以使其保持运行(例如音乐播放、蓝牙在后台运行等)。该服务实际上可以调用 javascript,否则 Javascript 将被停止。

编辑(添加 setinterval 函数)如果您像这样设置间隔:

window.localStorage.setItem(
'counterInterval',
setInterval({
$('#div').html(counter);
counter -= 1;
}, 1000);
);

您可以保存 onPause() 事件的时间戳并清除间隔

function onPause() {
clearInterval(window.localStorage.getItem('counterInterval');
window.localStorage.setItem('pauseTime', new Date());
}

然后检查 onResume() 事件的耗时,然后更新计数器:

function onResume() {
var resumeTime = new Date(),
pauseTime = window.localStorage.getItem('pauseTime'),
elapsedTime = (resumeTime.getTime() - pauseTime.getTime()) / 1000;
//you can round elapsedTime if you'd like
elapsedTime = Math.round(elapsedTime);

//correct the counter
$('#div').html(counter);
counter -= elapsedTime;

//set interval again until the next `Pause` event
window.localStorage.setItem(
'counterInterval',
setInterval({
$('#div').html(counter);
counter -= 1;
}, 1000);
);
}

无论如何,这都会在后台模式下节省资源......

关于ios - 当应用程序在后台时更新 iOS Cordova WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25370724/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com