应用程序在退出和重新进入后表现不同
App behaves different after exit and re-enter
Cordova,版本3.5.0-0.2.6
<body><script>
alert("documentready");
document.addEventListener("deviceready", function() {
alert("deviceready");
}, false);
</script></body>
我在部署后进入应用程序,收到"documentready"answers"deviceready"警报。我用后退按钮离开应用程序。我只准备了"文档"。当我用任务管理器强制关闭应用程序或重新部署它时,我会收到两个警报。
我希望这种行为也发生在正常重新进入应用程序之后。
我更喜欢这样一种解决方案,即没有证据表明应用程序在我离开之前和之后都被打开过。没有从垃圾收集等中恢复任何内容。理想情况下,从任务管理器执行与强制关闭方法相同的日志。
好:我希望,当我通过后退按钮关闭我的应用程序时,会发生与打开任务管理器并强制关闭应用程序完全相同的。这至少在理论上可行吗?
或者,当通过后退按钮离开时,我希望应用程序处于"类似休眠"的状态,如果我重新进入,它的行为绝对像从未离开过一样(调用与按下菜单/主页按钮时相同的逻辑)。
问题仍然存在-50秒有界赢取
将其添加到mainActivity.java
(无论在项目中称为什么):
@Override
public void onBackPressed() {
finish();
}
我不知道你为什么想要这样的行为,但你可以在按下后(或完成后)杀死应用程序。调用android.os.Process.killProcess(android.os.Process.myPid())
就像强制任务管理器停止一样。
将此添加到你的Cordova活动中,它应该会杀死所有没有任何残留的东西:
@Override
public void onBackPressed() {
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
}
我已经实现了同样的事情,我使用了来自cordova的backbutton事件。你可以在这里找到更多关于后退按钮事件的信息:链接。我找不到关于app.exitApp()函数的文档,但我知道它只适用于android和amazonfireos。
请参阅下面的代码片段,您只需要知道何时退出,但您可能从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);
这应该有效:
在my_app_dir->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;
对我来说,问题可能是添加事件侦听器时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);
}());
- Web服务器意外退出,正在重新启动新实例
- 淡出,然后直接进入新页面
- AngularJS ng-repeat在新数据进入时不更新视图
- 悬停意图菜单:进入和退出意图,但菜单项之间没有动画
- 运行 for 循环.递增值;退出并使用新值再次开始循环
- 仅当新背景图像退出时,才更改背景图像
- 阻止JavaScript计时器重新进入
- D3进入-退出更新和饼图
- 应用程序在退出和重新进入后表现不同
- 如何淡出然后直接进入新页面
- jQuery Scroll-在进入/退出滚动区域时触发一次功能
- 表单提交进入新页面
- 在循环for循环时如何进入和退出
- 如何从退出一个创建新的json对象
- Mozrepl:当进入一个新打开的窗口时,转到浏览器窗口的上下文
- 当客户端通过点击后退按钮进入页面时,如何使其加载新副本而不是缓存的副本
- jQuery拆分和重组列表进入新的列表
- 如何动态移动
进入一个新创建的 - 通过用户操作触发PHP脚本的一部分,而无需进入新表单
- 获得jquery滑动条内容保持可见,直到鼠标退出(新内容)