티스토리 뷰

레이아웃 구조 최적화

목차 1. 레이아웃 계층 구조 최적화 2. 레이아웃 재사용 3.중첩 layout Performance 

 

 

1. 레이아웃 계층 구조 최적화 

 

중첩된 LinearLayout을 사용하게 되면 View 계층 구조가 굉장히 깊어지게 됨

그렇기 때문에 레이아웃을 조사하고 최적화 하는 방법이 필요함 

(1) Layout Inspector(Hierachy View Android 3.1 미만만  가능)  (2) 린트 

 

 

 

Layout Inspector

1) App 실행

2) Layout Inspector 사용 ->  앱 레이아웃을 디자인 모형과 비교하고 앱의 확대 뷰 또는 3D 뷰를 표시하며 런타임에 앱 레이아웃의 세부정보를 검토 가능 

 

 

 

 

Live Layout Inspector 

- UI에 관한 포괄적이고 유용한 정보를 실시간으로 확인 

 

Layout Validation 

- 다양한 기기 및 디스플레이 구성의 레이아웃을 동시에 미리 볼 수 있는 시각적 도구

- 프로세스 초기에 레이아웃의 문제를 포착 가능 

 

 

 

Lint(린트)

- Lint(린트) 도구를 사용하여 뷰 계층 구조 최적화 가능 

- Lint 실행방법? Analyze -> Inspect Code 

 

Lint(린트)란?

테스트를 빌드하여 앱이 기능적 요구사항을 충족하는지 확인하는 것 외에도 린트를 통해 코드를 실행하여 코드에 구조적 문제가 없는지 확인하는 것이 중요, 린트 도구를 사용하면 구조적 문제로 인해 Android 앱의 안정성과 효율성에 영향을 미치거나 코드 관리에 지장을 줄 가능성이 있는 코드를 찾을 수 있음 

Android 프로젝트 소스 파일을 검사하여 잠재적 버그를 찾아내고 정확성, 보안, 성능, 사용성, 접근성, 국제화 등을 최적화

 

Lint(린트) 규칙

  • 복합 드로어블 사용 - ImageView와 TextView가 포함된 LinearLayout은 복합 드로어블로 더 효율적으로 처리할 수 있음
  • 루트 프레임 병합 - FrameLayout이 레이아웃의 루트이고 백그라운드나 패딩 등을 제공하지 않는다면 좀 더 효율적인 병합 태그로 바꿀 수 있음
  • 쓸모없는 리프 - 하위 요소나 백그라운드가 없는 레이아웃은 더 평평하고 효율적인 레이아웃 계층 구조를 위해 종종 삭제될 수 있음(표시되지 않기 때문).
  • 쓸모없는 상위 요소 - 동위 요소가 없고 ScrollView 또는 루트 레이아웃이 아니며 백그라운드도 없는 하위 요소가 있는 레이아웃은 더 평평하고 효율적인 레이아웃 계층 구조를 위해 삭제하고 하위 요소를 상위 요소로 직접 이동 할 수 있음
  • 깊은 레이아웃 - 너무 많이 중첩된 레이아웃은 성능에 좋지 않습니다. RelativeLayout 또는 GridLayout과 같이 더 평평한 레이아웃을 사용하여 성능을 개선해보세요. 기본 최대 깊이는 10.

Lint 예시 

 

 

2. 레이아웃 재사용 

-  전체 레이아웃을 효율적으로 재사용하려면 <include/>  <merge/> 태그를 사용

- 다른 레이아웃을 현재 레이아웃 내에 삽입 

 

(1) <include/>

 

 

 

 

(2) <merge/>

- include 쓰려면 반드시 감싸줄 View Group 존재 필요하기 때문에 뷰 계층을 깊게 하여 부하 가중시킴 

- 즉,  레이아웃을 그릴 때 depth 가 깊어 질수록 성능은 저하됨 

- 그렇기 때문에 merge 태그를 씀 , 단점은 view 그룹을 생성하지 않기 때문에 id 도 날아감,  inlcude 사용 시 불필요하게 사용되는 root view group 을 제거할 때 쓰인 

 

 

 

 

3. 중첩 layout 대신 Constrian Layout 을 사용하여 최적화? 

좋은글[번역문] ConstraintLayout의 성능 이점에 대한 이해 -> abandonia.tistory.com/1 

원본 -> android-developers.googleblog.com/2017/08/understanding-performance-benefits-of.html 

 

요약 -> 전통적인 중첩 layout을 그리는 것보다 Constraint Layout 을 쓰는게 좋다 .

systrace라는 도구를 사용하여 성능을 비교해보니 전통적인 View보다는 Constraint Layout을 쓰는게 더 좋은 성능을 보였음 systrace 성능 분석 도구 사용 방법 

https://android-developers.googleblog.com/2017/08/understanding-performance-benefits-of.html

 

 

 

 

 

 

<출처>

1. developer.android.com/training/improving-layouts/optimizing-layout?hl=ko

2. parkho79.tistory.com/88

3. medium.com/@ggikko/optimize-view-hierarchy-ab3054d8fbe6

4. sites.google.com/site/endihom/home/programming-language/android/article/layout-tricks-reuse

5 gun0912.tistory.com/38

6/ devbible.tistory.com/3

7. gun0912.tistory.com/38

8. stackoverflow.com/questions/5632114/how-to-include-layout-inside-layout/22972322

9. www.youtube.com/watch?v=b0gNkXdUfl0

 

 

 

 

 

 

 

academy.realm.io/kr/posts/tools-and-libraries-for-common-android-problems/불러오는 중입니다...

 

 

'Programming > Android' 카테고리의 다른 글

[Android] 메모리관리 memory leak  (0) 2021.01.05
[Android/Jetpack] Android Jetpack 정의  (0) 2020.12.22
[Android] Context  (0) 2020.12.03
[Android] FireBase Database 사용하기  (0) 2020.12.02
[Android] FireBase 시작하기  (0) 2020.12.02
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함