如何清理Sencha Touch 2资源?

7

我开始使用Sencha Touch 2,想知道它是否处理资源清理。

特别是:

  • 假设我们有一堆由url重定向触发的控制器。这些控制器实例会被缓存吗?还是每次需要调用控制器上的方法时都会创建新的实例?

  • 对于视图也是一样。Sencha是否缓存视图,还是每次需要重新渲染视图时都会重新创建它们。视图在何时被销毁(如果被销毁)?

  • 我能否对Sencha如何处理这些事情进行控制?

1个回答

11

回答您的问题:

  1. 每个控制器只创建一个实例,由Sencha处理控制器实例,因此我认为您不需要担心控制器实例。

  2. 清理应该由View来完成,因为视图的数量和复杂性与性能密切相关。

Sencha并没有专门清理其资源 - 开发人员必须显式地处理DOM清理(除了JavaScript自己的垃圾回收机制)。 因此,开发人员需要决定何时创建视图,是否将其保留在DOM中以供将来使用或在其隐藏后立即销毁它。 让我举几个例子:

A.

假设用户单击按钮,打开显示页面信息的INFO弹出窗口。 用户阅读完信息后,关闭弹出窗口。 现在,从用户的角度来看,用户重新打开弹出窗口的机会可能非常小。 因此,最好在用户关闭弹出窗口时立即将其从DOM中删除。 不管怎样,如果用户想要重新打开它,请重新创建弹出窗口并显示它。

B.

同样地,假设用户在登录页面登录到应用程序。 用户在应用程序中几乎不会返回到登录页面。 因此,一旦隐藏了登录View实例,请销毁它。

这些是一些需要显式删除视图的情况。以下是一些有关使用Sencha进行内存优化的参考资料:

a)Sencha Touch:优化内存使用

b)http://www.slideshare.net/senchainc/optimizing-performance


很棒的答案。仍然无法相信我首先不得不开始一个赏金来打败别人的答案 :-) 我注意到有一个叫做http://deftjs.org的扩展程序,它处理这些事情似乎有点不同。 - Christoph
很高兴知道它有所帮助。如果我早点看到它,我本来会回答的! - Swar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接