当我们有以下序列时,我们遇到了问题:
- 应用启动
- 网络资源开始
- 显示忙碌指示器 (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.BusyIndicator “busytest”在这些事件中不再起作用。有没有人有任何想法?
但也许在 DirectUpdate 的情况下可以放置其他一些清理代码?