2

アプリのパフォーマンスを最適化するために、メインのカルーセル内の要素の数を可能な限り削減しようとしました。私は 3 つの一次アイテム (N-1 および N+1 と一緒に表示されているアイテム) になりました。

また、N-1 および N+1 カルーセル アイテムのコンテンツのほとんどを切り取って、現在表示されているアイテムのコンテンツをプログラムで追加したいと思います (カルーセル アイテムが次のようになるように: http:/ /i.imgur.com/gm7cL7E.png )。

activeItemChangeここでは、イベント リスナーとして当然の選択です。問題は、特にローエンドの Android フォンでは、明らかに比較的遅いことです。発砲までに 4 秒ほどかかる場合があります。

コンテンツ作成を起動する別の方法としてカルーセルのプロパティを試してみましたonDragが、携帯電話に 2 つの操作 (カルーセルの移動のアニメーション化と新しいコンテンツ アイテムの作成) を実行させると、カルーセルの動きのアニメーションが途切れ途切れになります。

リスナーの発火速度を改善するために、activeItemChange またはカルーセルを変更する方法はありますか? または、私が見ている他のリスナーがより良いパフォーマンスを発揮するでしょうか? アプリの全体的なパフォーマンスを最適化するためにかなり多くの作業 (DOM の縮小、イベント委任など) を行いましたが、アプリの残りの部分は非常にうまく動作するため、一般的なパフォーマンス作業を行っても十分に解放されるかどうかはわかりません。私が望むレベルにactiveItemChangeを取得するためのCPU。

編集:十分な 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 に答える