2

我试图弄清楚 ZK 应用程序中 ViewModel 的典型生命周期是什么,以及 ViewModel 不再有效的重要点。

我想知道的最重要的事情是,如果浏览器刷新,通过加载 zul 页面实例化的 ViewModel 是否会被垃圾收集。我可以看到 init 方法被执行了,但是我没有看到 finalize 方法被调用。

第二个是如果在 zk 导航中的某些重要点上有一个列表或任何文档,您肯定会丢失以前实例化的 ViewModel。

4

1 回答 1

1

除非您在某处缓存对 ViewModel 的引用,否则 ViewModel 绑定到页面生命周期(在 ZK 术语中也称为桌面)。

  • 当您刷新页面时,ViewModel 会像 Desktop 一样重新创建,并且所有组件都会使用它重新创建。
  • 如果您导航到另一个 URL,那么所有组件和关联的 ViewModel(s) 都有资格被垃圾收集。

但是,您不应依赖是否调用 finalize 方法来确定它们是否被清除,因为 JVM 不能保证何时调用 finalize。

于 2012-12-04T01:22:16.923 回答