2013-03-02 4 views
2

내 앱의 성능을 최적화하기 위해 가능한 한 주 캐 러셀에서 요소의 수를 줄이려고했습니다. 나는 3 개의 1 차 아이템 (N-1과 N + 1과 함께 볼 수있는 아이템)까지 내려 갔다.activeItemChange : 성능을 향상시키는 방법은 무엇입니까?

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 문서에서 제기 된 성능 문제를 기반으로, 최종 결과가 좋지 않고 성능이 악화되는 것처럼 보입니다.

답변

0

좋은 질문입니다. 단지 제안이 효과가있을 수도 있고 그렇지 않을 수도 있습니다. 컨베이어의 activeItemChange에 집중하는 대신 항목을 넣으려는 컨테이너의 페인트 이벤트를 시도하거나 데이터가 변경되지 않을 경우 이벤트를 초기화 할 수 있습니다. 초기화는 페인트 칠보다 빠르지 만 한 번만 수행되므로 콘텐츠가 페인트 칠 사용을 변경하려는 경우 그렇지 않으면 초기화하는 것이 더 좋은 방법 일 수 있습니다.

+0

제안 해 주셔서 감사합니다. 불행히도 Sencha Touch는 컨베이어에서 항목 N + 1과 N-1을 자동으로 그리기 때문에 항목 N에 내용이 있는지 확인할 수 없습니다. 참으로 까다로운 문제. –

관련 문제