我希望在应用程序关闭或设备关闭/睡眠事件之前监听应用程序关闭和设备关闭等事件以运行某些代码(例如注销功能)。
Cordova / Phonegap有可能吗?我找了插件,我找到了关于PowerManagement相关事件的插件,但没有关于这些事件。
感谢
答案 0 :(得分:2)
您无法收听onAppClose
,onDeviceShutdown
或onExit
等事件,这些事件不存在。
可以通过在代码中添加eventListener
来触发事件。
DeviceReady Eventlistener
document.addEventListener("deviceready", yourCallbackFunction, false);
当您的设备进入yourCallbackFunction
状态时,deviceready
会触发。
可以在此处找到有关Cordova / Phonegap为您提供的eventListeners的文档: Cordova - Eventlistener Documentation
正如BipBip在his answer中所说,可能有可能使用onunload
标签内的body
属性触发此类事件,我只是在干净的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);
答案 1 :(得分:1)
我认为这个链接提供了您对Cordova生命周期的所需:
http://simonmacdonald.blogspot.fr/2011/04/phonegap-lifecycle-events.html
当您的应用程序退出时,将调用unload事件。如果您的应用程序需要保存一些状态数据,这是一个有用的事件。您可以通过将卸载侦听器添加到body标记来注册卸载侦听器,就像加载事件一样。
<body onload="onLoad()" onunload="onUnLoaded()">