본문 바로가기

ANDROID/Performance

[안드로이드] 안드로이드 오버드로우 개선 - 레이아웃의 background를 확인하자

앱 개발 단계가 잠시 소강상태에 있는동안 자잘자잘한 부분들까지 개선해서


기본적으로 최대한의 성능을 유지할 수 있도록 점검을 하고 있는 중이다.


그동안 메모리는 상당부분 건드려왔었기 때문에 레이아웃에 관련해서 개선점이 있을까


이전에 책에서 봤던 레이아웃 오버드로를 점검해보기로 했다.



대충 구글에서 말하고 있는 바로는


개발자 옵션에서 오버드로 옵션을 켰을때 붉은 부분이 최대한 나타지 않도록 하는것이 


'권장' 하는 바로 되어있는데, <더그 실라스의 안드로이드 앱 성능 최적화> 에서는


이 '권장'하는 부분, 오버드로를 제거함으로써 생각보다 상당한 성능개선이 나타난다는 점을


보여주고 있다.



그런고로 오버드로 옵션을 키고 앱을 쭉 실행해봤고, 아니나 다를까 겹치는 부분들이 상당히 있어


처음엔 부분 부분의 background를 @null로 설정해주었지만 큰 개선점이 없었고,


다음으로 레이아웃의 가장 바깥틀을 확인해보았는데, 이전에 풀스크린 테마를 사용하면서


해당 테마의 기본값이던 gray 색을 지우기 위해 내가 background 색을 white로 지정해두었던 것이었다.



이후 모든 레이아웃에서 최상위 레이아웃의 background를 @null로 설정해주자 


오버드로 현상이 한단계 적어진 것을 확인할 수 있었다.



다음단계는 null 설정으로 인해 다시 회색으로 돌아온 테마 색상이었는데,


스택 오버플로우에서 해당 이슈를 해결할 수 있는 방법을 찾았다.


크게 어려울 부분은 없고, 이전에 테마를 커스텀해서 활용하던 방법처럼



styles.xml 에서 사용할 테마를 parent로 설정해주고


<item name=android:windowBackground">@android:color/white</item>  항목을 추가해


오버드로도 하지 않으면서, 배경색을 white로 지정해 둘 수 있었다.



다음 개선점으로는 나머지 부분 레이아웃들의 오버드로도 줄일 수 있는 부분이 있는지와


레이아웃 구조등으로 인해 성능저하가 일어나는 부분이 있는지 정도로 생각하고 있다.


<참조> 


https://stackoverflow.com/questions/29798032/android-draw-background-with-no-gpu-overdraw-like-whatsapp?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa