以编程方式重新启动我的Phonegap应用程序

36

我该如何以编程方式重新启动我的PhoneGap应用程序? 我可以轻松地通过navigator.app.exitApp()退出应用程序,但我希望它能立即重新启动。

我需要这么做的原因是,在用户从下拉菜单中选择用户语言后,我必须重新启动它。i18n会立即在用户更新语言选择后触发,除了第一页上的5个按钮和另一页上的一个段落之外。这5个项目仍然是以前的语言(还有语言选择菜单布局出现了完全破坏的情况),但当我重新启动应用程序时,它们都是正确的语言。可能是i18n过程中存在非常复杂的问题,或者我可以通过强制重启来绕过该问题。

Ty, Nutty


如果您有一个带有HTML5路由URL的SPA,您可能需要考虑https://dev59.com/XGUp5IYBdhLWcg3wJlAH#37837377。 - Sebastien Lorber
3个回答

49

我使用以下内容:

location.reload(); 

对我来说非常有效。

保罗


哦,我差点忘记了这个问题,因为这个功能在第一阶段被移除了。但它似乎确实可以工作,所以在以后的阶段中它可能会非常有用。谢谢。 - NuttySquirrel
16
这会重新加载索引页面,但实际上不会关闭并重新启动应用程序。它本身就很有用。但是,我仍然想知道是否可能进行完全重启...? - Jason

10

这适用于iOS和Android(至少在2016年的平台版本中)。

它也适用于SPA应用程序。

// keep startup url (in case your app is an SPA with html5 url routing)
var initialHref = window.location.href;

function restartApplication() {
  // Show splash screen (useful if your app takes time to load) 
  navigator.splashscreen.show();
  // Reload original app url (ie your index.html file)
  window.location = initialHref;
}

感谢您的帖子,只需要在window.location = initialHref之后添加navigator.splashscreen.hide();,它就可以完美地工作了。 - Pritish
1
@Pritish 如果在您的index.html页面重新加载时直接调用hide(),那么整个应用程序重新启动期间将看不到闪屏。但是如果对您有效,那就取决于您如何将闪屏集成到自己的应用程序中。 - Sebastien Lorber
感谢您宝贵的回复,我会根据您的建议对代码进行修改。 - Pritish

10

试试这个

navigator.app.loadUrl("file:///android_asset/www/index.html", {wait:2000, loadingDialog:"Wait,Loading App", loadUrlTimeoutValue: 60000});

巴克里


工作完美。谢谢! - Erdem Güngör
2
这是针对安卓的,对吧?如果我需要重新加载iOS应用程序怎么办?iOS index.html的路径是什么? - Salman Ullah Khan
1
我确认(正如预期的那样)它只适用于Android :D - Sebastien Lorber
在IOS中,app内部没有loadUrl函数。 - Ifch0o1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接