Cordova,版本3.5.0-0.2.6
<body><script>
alert("documentready");
document.addEventListener("deviceready", function() {
alert("deviceready");
}, false);
</script></body>
我在部署后进入应用程序,我得到'documentready'和'deviceready'警报。 我用后退按钮离开应用程序。 我只获得'documentready'。 当我使用任务管理器强制关闭应用程序或重新部署它时,我会收到两个警报。
我希望在正常重新进入应用程序后也会发生此行为。
我希望找到一个解决方案,在我离开之前没有任何证据表明应用程序已经打开过。没有从垃圾收集等中恢复。理想情况下,从任务管理器执行与强制关闭方法相同的日志。
好的:我希望,当我通过后退按钮关闭我的应用时,正好相同,就像我打开任务管理器并强制我应用关闭。这至少在理论上是可能的吗?
或者,我希望应用程序在通过后退按钮离开时处于“休眠状态”状态,如果我重新输入它,它的行为绝对就像从未离开过一样(呼叫与按下菜单/主页按钮时的逻辑相同。)
问题仍然开放 - 获得50RS的待遇
答案 0 :(得分:1)
我不确定你为什么会想要这样的行为,但你可以在背压(或完成)时杀死应用程序。
调用android.os.Process.killProcess(android.os.Process.myPid())
就像强制停止任务管理器一样。
将此添加到您的CordovaActivity中,它应该杀死所有内容而不留下任何遗留物:
@Override
public void onBackPressed() {
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
}
答案 1 :(得分:1)
将此添加到您的mainActivity.java
(无论您在项目中调用它):
@Override
public void onBackPressed() {
finish();
}
答案 2 :(得分:0)
我实现了同样的事情,我使用了cordova的backbutton事件。您可以在此处找到有关后退按钮事件的更多信息:link。我找不到关于app.exitApp()函数的文档,但我知道它只适用于android和amazon-fireos。
请参阅下面的代码段,您只需知道何时要退出,但您可能从document.location对象或其他东西知道。希望它有所帮助。
document.addEventListener("backbutton", function (evt) {
// replace this with some logic (maybe document.location) to now if you are on the main page or not
if (true) {
// Check if methods exists
if (typeof navigator.app !== "undefined" && typeof navigator.app.exitApp !== "undefined") {
evt.preventDefault();
navigator.app.exitApp();
}
} else {
history.back();
}
}, false);
答案 3 :(得分:0)
这应该有效:
在my_app_dir-&gt; config.xml中添加
<preference name="KeepRunning" value="false" />
以下
document.addEventListener(“deviceready”,function(){...
添加
document.addEventListener('backbutton', function() {
navigator.app.exitApp();
}, false);
然后打开cmd
,转到项目文件夹并运行cordova build android; cordova run --device android;
答案 4 :(得分:0)
对我有用的,问题可能是在添加事件侦听器时DOM尚未就绪。并且可能是由于应用程序被缓存而导致的更快负载。使用自执行函数添加事件侦听器,您将确保已加载DOM。
function domIsReady() {
alert('DOM is ready')
}
function deviceIsReady() {
alert('Device is Ready')
}
( function() {
if (document.readyState === "complete") {
domIsReady();
} else {
if (window.addEventListener) {
window.addEventListener('DOMContentLoaded', domIsReady, false);
} else {
window.attachEvent('onload', domIsReady);
}
};
document.addEventListener("deviceready", deviceIsReady, true);
}());