Skip to content

마커 최적화

이정건 edited this page Dec 14, 2023 · 1 revision

관련 PR-1 관련 PR-2

처음에는 UiState가 업데이트되면 모든 마커를 지우고 다시 새로 그려주도록 로직을 구현하였다. 하지만 그렇게 하면 UiState의 다른 속성이 바뀔 때도 마커가 전부 다시 그려져 불필요한 연산이 많이 수행되게 된다.

그래서 일단 1차적으로 UiState에서 선택된 마커의 인덱스 정보를 분리하여 따로 관리하였다. 그러면 UiState의 다른 속성이 바뀌어도 마커는 다시 그려지지 않아 1차적으로 문제를 해결할 수 있었다.

그 다음으론 선택된 마커가 변경될 때 마커 아이콘도 변경이 필요한데, 이를 이전에 선택된 마커는 지우고 이번에 선택된 마커를 선택된 아이콘으로 다시 그려주는 방법으로 해결하였다.

  • 필요한 마커만 다시 그리는 경우: CPU 사용량 최고 16%, 메모리 9MB 증가
  • 모든 마커를 다시 그리는 경우: CPU 사용량 최고 47%, 메모리 57MB 증가

클러스터링을 적용하기 전에는 마커를 따로 보관해뒀다가 필요할 때 접근하여 지우는 로직으로 구현하였다가, 클러스터링을 적용하면 모든 아이템을 clusterManager에서 관리하게 되는데 이를 통해 해당 마커에 접근할 수 있게 되서, 마커에 접근하여 아이콘을 변경하는 방식으로 해결하였다.

🚩SnapPoint🚩

Android 기술적 도전

Backend 기술적 도전

🤖기술 공유🤖

Android

Backend

📖회의록📖

스크럼
팀회고, 개인회고
Clone this wiki locally