我开始使用Sencha Touch 2,我只是想知道它是如何处理资源清理的。
特别是:
想象一下,我们有一堆由url重定向触发的控制器。这些Controller实例是否会被缓存,或者每次需要在控制器上调用方法时Sencha都会创建新的实例
视图相同。 sencha是否缓存视图,或者每次需要再次渲染时都会重新创建它们。什么时候视图被破坏(如果是)?
我可以控制sencha如何处理这些事情吗?
答案 0 :(得分:11)
回答你的问题,
Sencha只创建了每个控制器的一个实例。所以,我真的认为你不需要为控制器实例而烦恼。让Sencha处理这个问题。
实际上应该使用视图进行清理,因为视图的数量和复杂性与性能密切相关。
Sencha没有专门清理其资源 - 开发人员必须明确地处理DOM清理(除了Javascript自己的垃圾收集机制)。因此,开发人员需要决定何时创建视图,是将其保留在DOM中以供将来使用,还是在隐藏后立即销毁它。让我举几个例子:
:一种。强>
假设单击按钮,用户将打开一个显示的INFO弹出窗口 有关该页面的一些信息。一旦用户阅读了信息,他就可以了 关闭弹出窗口。现在,从用户的角度来看,可能会有一个非常 用户重新打开弹出窗口的可能性很小。所以,最好的将是 如果弹出窗口在用户关闭后立即从DOM中删除。 无论如何,如果用户想要重新打开它,请重新创建弹出窗口并显示 它
<强>乙强>
同样假设用户在登录页面并登录到 应用。用户几乎不回到登录页面 应用程序。因此,一旦隐藏了登录View实例,就将其销毁。
因此,这些是可以在需要时显式删除视图的一些场景。下面是一些参考资料,可以很好地了解Sencha的内存优化:
a)Sencha Touch: Optimizing Memory Usage
b)http://www.slideshare.net/senchainc/optimizing-performance