Cordova 设备和应用程序事件

Cordova Device and Application events

我想在应用程序关闭或设备关闭/睡眠事件之前监听应用程序关闭和设备关闭等事件以 运行 某些代码(例如注销功能)。

Cordova/Phonegap 可以吗?我寻找插件,我找到了关于 PowerManagement 相关事件的插件,但没有找到关于这些事件的插件。

谢谢

您无法收听 onAppCloseonDeviceShutdownonExit 等事件 - 这些事件不存在

有些事件可以通过在您的代码中添加 eventListener 来触发。

例子

DeviceReady 事件侦听器

document.addEventListener("deviceready", yourCallbackFunction, false);

当您的设备进入 deviceready 状态时,yourCallbackFunction 将触发。

Cordova/Phonegap 提供的关于 eventListeners 的文档可以在这里找到: Cordova - Eventlistener Documentation


正如 BipBip 在 中所说的那样,在 body 标签内使用 onunload 属性可能会触发此类事件,我只是在一个干净的 cordova 中进行了测试申请。

<!DOCTYPE html>
<html>
    <head>
<!--        <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">-->
<!--        <meta name="format-detection" content="telephone=no">-->
<!--        <meta name="msapplication-tap-highlight" content="no">-->
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
        <link rel="stylesheet" type="text/css" href="css/index.css">
        <title>Hello World</title>
    </head>
    <body onload="alert('onload fired');" onunload="alert('onunload fired');">
        <script type="text/javascript" src="cordova.js"></script>
    </body>
</html>

所以 onunload 从未触发(如果您将 alert 替换为 console.log()因为完全关闭的 cordova 应用程序从不触发此类事件

所有这些行为的替代方法可能是 onPause eventListener。这个在用户切换应用程序或点击主页按钮进入主屏幕后立即触发。该项目由以下人员实施:

document.addEventListener("pause", onPauseFired, false);

我认为此链接提供了您想要的有关 Cordova 生命周期的信息:

http://simonmacdonald.blogspot.fr/2011/04/phonegap-lifecycle-events.html

当您的应用程序退出时,将调用卸载事件。如果您的应用程序需要保存一些状态数据,这是一个有用的事件。您可以通过将卸载侦听器添加到 body 标记来像注册加载事件一样注册卸载侦听器。

<body onload="onLoad()" onunload="onUnLoaded()">