2012-11-09 3 views
1

저는 여전히 Android에 익숙하지 않으므로 불필요한보기 노드를 만들지 않기 위해 필요한 레이아웃 전문 지식이 없을 것입니다. 현재 나의 주요 XML 레이아웃은 거대하고 (약 770 줄)로드하는 데 너무 많은 시간이 걸린다. (약 2 초가 걸리므로 반응이 느껴진다.)android cache 거대한 레이아웃 인플레이션

XML을 구문 분석하고 뷰를 반환 할 수있는 inflate 명령에 대해 배웠습니다. 그래서 AssyncTask를 사용하여 스플래시 화면에서 이러한 뷰를 캐시하고 주 활동의 onCreate()에서 사용할 수 있다고 생각했습니다.

이것이 문제를 해결할 수 있습니까? 내가 조사해야 할 다른 것이 있습니까? 나는 현재 메모리 누출 가능성에 대해 알고 있으므로 그 점에 유의해야한다.

편집 : 사전 팽창을 시도했지만 전혀 성능이 향상되지 않은 것 같습니다.

LayoutInflater inflater = LayoutInflater.from(this); 
View layout = inflater.inflate(R.layout.question, null, false); 

그리고 잠시 후, 다른 활동

:

setContentView(layout); 

하지만 여전히 열 같은 2 초 정도 걸립니다. 내가 놓친 게 있니? 사전 개선은하지 않겠습니다.

답변

0

예, LayoutInflater 클래스를 사용하여 뷰를 "미리 팽창"시킬 수 있습니다. 그러나 무엇이 잘못되었는지 정확히 파악하기 위해 Hierarchy Viewer 도구를 사용하여 레이아웃 성능을 평가하는 것이 좋습니다. 이 도구를 사용하는 방법에 대한 Romain Guy의 여러 동영상이 있습니다. Lint (이전의 layoutopt 도구를 대체 한)가 제공하는 힌트를 사용하여 레이아웃을 최적화 할 수도 있습니다. 이것에 대한 자세한 내용은 here입니다.

+0

사전 팽창을 시도했지만 효과가 없었습니다. 레이아웃 자체를 리팩토링해야하는 데 방해가됩니까? – h4lc0n