activeItemChange:如何加快其性能?

时间:2013-03-02 09:47:39

标签: sencha-touch-2

为了优化我的应用程序的性能,我试图尽可能减少其主旋转木马中的元素数量。我要查看3个一阶项目(正在查看的项目,以及N-1和N + 1)。

我还想删除N-1和N + 1轮播项目的大部分内容,并以编程方式添加当前正在查看的项目的内容(以便轮播项目看起来像这样: http://i.imgur.com/gm7cL7E.png)。

activeItemChange是事件监听器的明显选择。问题是,它显然相对较慢,特别是在低端Android手机上。点火可能需要4秒钟。

我尝试了旋转木马的onDrag属性作为触发内容创建的另一种方式,但要求手机进行两项操作(动画旋转木马移动和创建新的内容项)使旋转木马运动动画波涛汹涌。

有没有办法修改activeItemChange或轮播以提高听众的射击速度?或者我能看到的任何其他听众会表现得更好?我已经做了很多工作来优化应用程序的整体性能(缩小DOM,事件委托等),其余的应用程序运行得很好,所以我不确定做一般的性能工作会释放足够的CPU将activeItemChange调整到我想要的水平。

编辑:为了释放足够的CPU,我做了更多的性能改进,但无济于事。任何额外的提示将不胜感激。

编辑2 :建议将order: 'before'用于此事件,如:

listeners : {
    order : 'before',
    activeitemchange : someFunction
}

这确实更快。但是,由于activeItemChange尚未被触发,我无法确定哪个项目应该添加轮播内容。如果我能确定旋转木马的方向,那就足够了,但我似乎也无法做到。

此外,由于Sencha似乎会自动绘制N + 1和N-1并擦除N + 2和N-2,我认为我可以将其用作更快速决定项目在旋转木马中的位置;不幸的是,根据Sencha文档中提出的性能问题,最终它的性能会更差而不是更好。

1 个答案:

答案 0 :(得分:0)

好问题。只是一个建议可能会或可能不会奏效。也许你可以尝试容器的绘制事件,而不是集中在旋转木马的activeItemChange上,或者如果数据不会改变则初始化事件,初始化比绘制更快但只触发一次如果您的内容将改变使用画,否则尝试初始化它可能是更好的方法。