【问题标题】:Cordova InAppBrowser plugin freezing the appCordova InAppBrowser 插件冻结应用程序
【发布时间】:2017-07-11 16:22:22
【问题描述】:

我们有一个基于混合 Cordova 的 iOS 应用程序。我们正在使用 InAppBrowser 插件使用以下代码在移动 Safari 中打开一个 url:

window.open(encodeURI(appurl), '_system', options);

这会将用户带出我们的应用程序并打开移动 Safari 浏览器并尝试加载 URL。如果在 url 仍在加载时,我们点击 iOS 的“Back to myApp”按钮返回到我们的应用程序,应用程序将被冻结。 UI 不响应点击或任何事件。在日志中,我继续看到这些行:

2017-02-21 22:36:33.343 myESS[6467:1487510] in open
2017-02-21 22:36:33.344 myESS[6467:1487510] THREAD WARNING: ['InAppBrowser'] took '18.220947' ms. Plugin should use a background thread.
2017-02-21 22:36:33.363 myESS[6467:1487510] in open
2017-02-21 22:36:33.364 myESS[6467:1487510] THREAD WARNING: ['InAppBrowser'] took '19.006836' ms. Plugin should use a background thread.
2017-02-21 22:36:33.383 myESS[6467:1487510] in open
2017-02-21 22:36:33.383 myESS[6467:1487510] THREAD WARNING: ['InAppBrowser'] took '19.141113' ms. Plugin should use a background thread. 

这些日志会持续一段时间。我要加载的网址只是http://www.google.com。日志语句会持续几秒钟。然后日志停止,我被自动从我的应用程序带到移动 safari 浏览器。 如果我现在回到 myApp,UI 是响应式的。

关于为什么插件会以这种方式运行的任何想法?插件open 方法被自动调用多次,它会冻结应用程序 UI,直到加载 url。有关如何解决此问题的任何建议?

【问题讨论】:

  • 我认为你多次调用 open
  • 你是对的。这是我们这边的一个问题。某个地方的 open call 周围的不正确循环导致了这个问题。谢谢。

标签: ios cordova phonegap-plugins


【解决方案1】:

下面的 sn-p 可能会对你有所帮助

setTimeout(function(){ _self.openUrl(url) },300);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2018-01-26
    相关资源
    最近更新 更多