【发布时间】:2013-04-09 11:09:55
【问题描述】:
我正在使用 Phonegap 开发 Android WebApp。要退出应用程序,我从 JavaScript 代码调用 navigator.app.exitApp。
我试图找到此方法的文档页面,但它不存在。然后我下载了 Android 的 Phonegap 源代码,但我迷路了,没有找到这个库在哪里以及如何从本机代码中退出应用程序。我没时间做这个,所以我决定自己测试一下。
我的应用有一个 DroidGap 活动(使用 singleInstance 标志启动),还有一个服务和一个广播接收器。用户必须能够关闭 GUI,但我想保持服务和其他一切运行。所以我想做的是只完成活动,而不是调用System.exit。
现在奇怪的部分来了。我已经在模拟器中对此进行了测试,DroidGap 活动似乎以我想要的方式关闭(onDestroy 被触发)并且服务保持运行。但是,尽管活动已关闭,并且应用程序图标不再显示在任务管理器中,但不知何故 JavaScript 计时器仍在运行。我已经三重检查了这一点。我想相信活动在后台,但它不可能:它作为单实例启动,当我再次打开应用程序时,它显示初始页面(它在不同的页面中关闭)。
为什么会发生这种情况?我应该编写一个插件来直接调用finish 吗?
提前致谢。
【问题讨论】:
-
只是为了分享,我也经历过同样的事情。不知何故,即使应用程序关闭并且如果我们有一些计时器(例如使用 setInterval),有时它也会继续运行。我的理论是应用程序已被销毁,但 webview 以某种方式保留在内存中被执行?
-
我目前正在真机上调试。有一个
WebViewCoreThread在关闭活动后仍在运行。我发现了这个问题,可能相关:stackoverflow.com/q/2040963/813951 -
这很奇怪。应用销毁后webview怎么还活着?
-
应用进程没有被破坏,因为有更多的组件在运行。 WebView 和 Activity 被销毁,但与 WebView 关联的线程仍在运行(与您在常规活动中启动新线程并完成活动时相同)
-
看来你回答了你自己的问题:)
标签: java javascript android cordova exit