3

当我们有以下序列时,我们遇到了问题:

  • 应用启动
  • 网络资源开始
  • 显示忙碌指示器 (1)
  • 连接到 WL 服务器
  • 直接更新被触发
  • 网络资源重启
  • 显示忙碌指示灯 (2)
  • 连接到 WL 服务器
  • 成功
  • 加载并更改为欢迎页面
  • 隐藏忙碌指示灯 (2)

这样做的效果是,在直接更新的 Web 资源中,我们(当然)丢失/丢失了对繁忙指示器 (1) 的引用,并且在触发直接更新后我们无法隐藏该指示器。因此,我们有两个指标 (1) (2) 打开,只有一个 (2) 关闭,旧的 (1) 永远向上。

一种解决方案是在触发/执行直接更新之前获取一个事件......我们可以隐藏我们的指标 (1)。这将变得与以下问题非常相似:IBM Worklight - How can I execute JavaScript code before updates the application?

一种更通用的方法是触发应用程序的“更深”重启……这意味着还要重启本机 shell 和所有 cordova 资源。那么所有的本地资源,比如忙碌指示器和其他东西都应该被移除和重置,对吧?

有没有什么方法可以实现直接更新后应用的这种“深度”重启?这个问题已知吗?

9 月 5 日更新

我们看到在 DirectUpdate 重新启动 Web 资源之前的某个时间会触发以下事件:

window.addEventListener("beforeunload",
    function() { 
       WL.Logger.debug("busy test - unload2"); 
        app.busytest.hide();
            }
        , false);

window.addEventListener("unload",
    function() { 
       WL.Logger.debug("busy test - unload3"); 
         app.busytest.hide();
            }
        , false);

...但不幸的是,隐藏我们的 WL.BusyIndi​​cator “busytest”在这些事件中不再起作用。有没有人有任何想法?

但也许在 DirectUpdate 的情况下可以放置其他一些清理代码?

4

1 回答 1

1

忙碌指示器是一个单例。如果您创建了几个繁忙的指标,显示它们然后隐藏它们——所有的都将被隐藏。

于 2013-09-06T03:17:16.897 回答