Cordova:暂停和恢复事件未触发

本文概述

如果你想知道用户何时离开应用程序, 可以使用一个简单的事件监听器, 该事件监听器使用Javascript对暂停或恢复事件做出反应:

document.addEventListener("resume", function(){
    // Do something on resume
}, false);

document.addEventListener("pause", function(){
    // Do something on pause
}, false);

如果你使用的代码看起来像上一个示例, 并且它不起作用(永远不会触发回调函数), 那么你需要知道自己做错了什么。是的, 错误不在cordova中, 而是在你的工作方式中, 你可能以某种方式通过了阻止事件执行的关键步骤。

在本文中, 我们将显示你经过的3个步骤, 可能会导致你的应用无法运行暂停和恢复事件。

1.在设备就绪事件之后添加侦听器

确保在执行deviceready事件之后或期间附加了pause and resume事件。此事件对于任何应用程序都是必不可少的。它表明Cordova的设备API已加载并可以访问。 Cordova由两个代码库组成:本机代码和JavaScript。在加载本机代码时, 将显示自定义加载图像。但是, 仅在DOM加载后才加载JavaScript。这意味着在相应的本机代码可用之前, Web应用程序可能会调用Cordova JavaScript函数。

// Add the deviceready event
document.addEventListener("deviceready", function(){
    
    // attach events
    document.addEventListener("resume", onResume, false);
    document.addEventListener("pause", onPause, false);
}, false);

 
function onPause() {
    alert('paused');
}

function onResume() {
    alert('resumed');
}

如果你运行你的应用程序, 但该功能仍被忽略, 请继续执行步骤2。

2.将KeepRunning首选项添加到config.xml中

确保你的config.xml文件的KeepRunning首选项设置为true。此首选项确定即使在暂停事件触发后, 应用程序是否仍在后台运行。将其设置为false不会在暂停事件后终止应用程序, 而只是在应用程序处于后台时停止在cordova Web视图中执行代码。

在插件的config.xml文件的<widget>标记内添加以下标记:

<preference name="KeepRunning" value="true"/>

如果你构建并运行你的应用程序, 并且回调仍被忽略, 请继续执行步骤3。

3.确认已加载cordova

最后一步, 这可能是未触发侦听器的原因。确保在主html文档中包含cordova脚本。一些开发人员评论cordova脚本是因为他们直接在浏览器中进行测试, 有时这可能会导致此问题, 因为他们忘记了再次包含该脚本。

验证你的文档, 如果确实没有加载脚本, 请使用以下脚本标记添加它:

<script type="text/javascript" src="cordova.js"></script>

那应该可以解决问题, 并且你的回调将被毫无问题地触发。请记住, 当你添加新平台时(例如, cordova平台添加android, 然后cordova构建android), 将添加此文件, 该文件(cordova.js)会在assets / www文件夹中自动创建。

编码愉快!

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?