2011-10-27 3 views
1

이것은 최적화 기법에 대한 일반적인 질문이며 많은 코드를 라이브러리로 옮길 때 많은 코드를 재 작성하려는 것 이상입니다.Flex 네비게이터 .push보기 느림

CPU 및 메모리 사용 공간이 줄어든 방법을 사용하여보기 내부에서 성능이 빨라지므로 성능에 큰 영향을주지 않습니다.

내가 가진 문제는 느린 것 같습니다 navigator.pushView 함께, 내가보기에 대해의 creationComplete 내 초기화 함수를 호출 할 수 있지만, 나는 그렇게 고려가 내 초기화 보이는 같은 :

private function init() : void { 
    doStuff1(); 
    doStuff2(); 
    doStuff3(); 
} 

내가 뭘 할 수 보기가 부드럽게 전환되도록하려면 어떻게해야합니까? 이것은 모바일 장치에 있습니다.

타이머를 사용하여 init 함수 내부의 모든 코드를 지연시키는 것으로 생각하여 처음 3 초가 지나면 아무 일도 일어나지 않고 뷰에 필요한 모든 프레임이 있지만 올바르게 보이지 않습니다.

조언을 많이 부탁드립니다.

답변

3

성능이 정말 당신이 그 "doStuff()"방법에서 무슨 일을하는지에 따라 달라집니다, 감사합니다. 고려해야 할 몇 가지 사항 :

1) creationComplete()이 실행될 때; 뷰는 이미 한 번 렌더링되었습니다. 그 물건을 다시 렌더링하게 만드는 일을하고 있습니까? 자식 구성 요소의 스타일 및 많은 속성을 변경하면 해당 자식이 다시 렌더링되고 종종 구성 요소가 표시됩니다.

많은 사람들이 creationComplete를 생성자로 사용합니다. 실제로는 "생성자 스타일"코드를 넣는 것이 최악의 경우입니다. 대신 대부분의 항목에 대해 사전 초기화를 사용하거나 하위 구성 요소에 대한 속성을 설정해야하는 경우 초기화해야합니다.

2) viewActivate은 전환이 발생한 후에 실행됩니다. 따라서 코드를 creationComplete에서 viewActivate로 이동하는 것을 고려해야합니다. mobile view's lifecycle에 대한 자세한 정보는 여기에 있습니다.

+0

viewActivate 수도 있습니다! 나는 그것을 시도 할 것이다 - 정보에 감사한다 - 정말로 아주 바르게 평가되었다! –

+0

나는 또한 중첩 문제가 있었다! 많이 중첩 된 그룹 (skinnable containers/vgroup, hgroup 등). –

+0

성능면에서 가능한 한 적은 수의 컨테이너를 사용하는 것이 좋습니다. 당신이 사용하는 모든 그룹에 대해; 그것은 실행해야 할 다른 레이아웃 알고리즘입니다. – JeffryHouser

관련 문제