【发布时间】: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