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 文档中提出的性能问题,看起来它最终的性能会更差,而不是更好。

4

1 回答 1

0

好问题。只是一个建议可能有效,也可能无效。除了专注于轮播的 activeItemChange 之外,也许您可​​以尝试要放置项目的容器的绘制事件,或者如果数据不会更改,则初始化事件,初始化比绘制快,但只触发一次所以如果您的内容要更改使用绘制,否则尝试使用初始化它可能是更好的方法。

于 2013-03-07T06:24:41.073 回答