본문 바로가기

메모리 관리(메모리 프로파일러(memory profiler)) 앱의 메모리에 문제가 발생 -> 안드로이드 스튜디오의 메모리 프로파일러로 시간경과에 따라 메모리를 할당하는 그래프를 확인한다. -> 사용중인 메모리양, 할당된 java객체수 , 가비지 수집이 발생하는 시간 1. 타임 라인에서 바람직하지 않는 메모리할당 패턴이 있는지 확인한다. 2. 자바 힙 덤프하여 특정시점에 어떤 객체가 메모리를 고갈시키는지 확인한다. 3. 정상 사용과 극단적인 사용중 메모리할당을 기록하여 너무 많은 객체를 할당하거나 누출되는 객체를 할당하는 곳이 어딘지 파악한다. 4. Record memory allocations 클릭한다 -> Android Monitor는 기록하는 동안 앱에서 발생하는 모든 할당을 추적한다. 다 마쳤으면 Stop recording 클릭하여 할당을 볼수 있다. 5. .. 더보기
RecyclerView와 ListView의 차이점 RecyclerView와 ListView의 차이점1. 뷰홀더패턴 강제의 차이 2. ListView는 수직스크롤만 가능하나 Recyclerview는 layoutmanager로 수평, 수직스크롤 구현이 쉽게 가능하며 격자형 리스트, 크기가 다른 사각형 리스트등을 만들수있다. 3. ListView는 아이템 삽입, 삭제에 대한 애니메이션이 없으나 Recyclerview는 ItemAnimator클래스를 통해 애니메이션 핸들링 가능하다. 삽입, 삭제, 이동에 대한 커스터마이징 가능, defaultItemAnimator가 제공된다.4. Listview는 onItemClickListener가 있고 RecyclerView는 onItemTouchListener가 있다. 5. ListView는 머리글, 바닥글을 기본적으로 .. 더보기
RecyclerView 스크롤링 스무스하게 처리하기 RecyclerView 스크롤링 스무스하게 처리하기 - 페이징(데이타를 일정한 데이터로 나누는 것을 의미)을 구현해 스크롤을 맨밑으로 내리기전에 다음 데이타를 가져와서 갱신한다. 1. 앱의 메인스레드가 많은 일을 하지 않도록 하는 것으로 작업자 스레드에서 네트워크, 데이타베이스를 액세스한다. 2. 뷰홀더 디자인 패턴을 사용한다.(findViewById호출을 줄여준다.) 3. ItemPrefetch로 렌더링 퍼포먼스 향상 -> setInitialPrefetchItemCount(4); - 메인스레드는 뷰생성및바인딩을 처리하고 렌더스레드는 그걸 표시하게 되는데 렌더스레드가 렌더링할동안 메인스레드는 idel에 걸린다. -> 뷰생성및바인딩을 이전프레임허용 -> 메인스레드와 렌더스레드가 병렬작업이 가능하게 해준다... 더보기