Phonegap - 单击图标重新启动应用程序,而不是切换到已经运行的应用程序
Posted
技术标签:
【中文标题】Phonegap - 单击图标重新启动应用程序,而不是切换到已经运行的应用程序【英文标题】:Phonegap - clicking on icon restarts app instead of switching to already running app 【发布时间】:2017-12-06 23:10:12 【问题描述】:我有一个加载外部网站的非常简单的 Phonegap 应用程序:
<script type="text/javascript" src="cordova.js"></script>
<script>
function onDeviceReady()
if (navigator.connection.type == Connection.NONE)
navigator.notification.alert('An internet connection is required to continue');
else
window.location = "http://example.com";
document.addEventListener("deviceready", onDeviceReady, false);
</script>
当我运行它时,它一切正常并加载了外部站点。如果我切换到其他应用程序,然后单击图标运行它(在 android 中),它会毫无问题地切换回已经运行的应用程序。
当我从测试环境切换到生产环境并将其切换到https
版本时,问题开始出现。现在,当我单击该图标时,它会重新启动应用程序,而不是简单地切换回已经运行的应用程序。
有什么方法可以控制点击图标是重新加载应用程序还是简单地切换回已经运行的应用程序?
编辑:
好的,我认为唯一的区别是将“http”更改为“https”,但显然我也升级了“phonegap”。我尝试将其切换回“http”,但它仍然在做同样的错误事情。有没有办法控制这个?我目前正在运行 6.5.2,我认为正确的功能是使用 6.5.0 。
编辑 2:
好吧...似乎有点随机。我让它运行最新版本并使用“https”,它有时会重新加载,有时不会。
【问题讨论】:
【参考方案1】:移动操作系统操作系统都有不同的方式来管理应用程序的内存。普遍的共识是,应用程序应始终“尽早/经常保存”,以防它被操作系统杀死以释放内存等。
在这种情况下,可能有办法。试试Android Launch Mode preference:
<preference name="AndroidLaunchMode" value="singleInstance" />
我从来没有用过这个,所以也许是try out each mode too。
【讨论】:
是的,我看过了。默认值为singleTop
。 singleTask
和 singleInstance
似乎都表示它们重新启动,它说“将始终创建一个新任务,并且一个新实例将作为根任务推送到该任务”。但是,我还没有尝试过它的确切作用。
另外,我知道 Android 是如何杀死进程的,但这似乎会立即发生(单击图标首先运行,然后返回单击它立即重新启动)。但是,当它重新启动时,我发现杀死其他一些应用程序似乎会鼓励它继续运行。以上是关于Phonegap - 单击图标重新启动应用程序,而不是切换到已经运行的应用程序的主要内容,如果未能解决你的问题,请参考以下文章
活动生命周期。当应用程序已经打开(折叠)正在关闭并在图标单击时重新启动?
是否可以通过 PC 重新启动或用户单击应用程序快捷方式来确定 MFC 应用程序正在启动?