안드로이드 Android (44) 썸네일형 리스트형 안드로이드 개발 (34) RecyclerView 성능 향상 Android 개발을 하다보면 불가피 하게 RecyclerView를 사용해야 하는 순간이 대부분 옵니다. 요새 Compose열풍이 휩쓸고 있지만 아직은 회사에서 사용하는 목록형 UI는 RecyclerView를 통해 만들었을 겁니다. 저 또한 마찬가지로 RecyclerView를 활용하여 목록형 UI를 만들던 도중이었습니다. 하지만 테스트 기기중에 저사양 기기는 RecyclerView를 단순하게 사용하면 버벅거림을 피할 수 없었습니다. 저사양 기기에서 최상의 퍼포먼스를 내기 위해 연구했습니다. 내가 만든 소프트웨어는 기기에 차별받지 않고 항상 사랑받고 싶은 욕심으로.. 연구했던 내용을 블로그에 정리하려고 합니다. 0. 느린 렌더링 "UI 렌더링은 앱에서 프레임을 생성하여 화면에 표시하는 작업입니다. 사용자와.. 안드로이드 개발 (33) Coroutine Flow on Android 안녕하세요 Loner 입니다. 스터디에서 발표를 했던 Android 에서의 Coroutine Flow 활용을 블로그에 다시 정리합니다. 입문용에 가까운 내용이기 때문에 설명이 축약된 부분이 많을 수 있습니다. 판초라는 청년이 산에 살고 있었습니다. 판초는 물을 길러오기 위해서 호수에 가야합니다. 하지만 호수를 찾아갔더니 호수의 물이 말라있었습니다. 직접 호수를 찾아가지 않고 물을 길러오는 동시에 물이 말랐는지 확인할 방법을 찾던 판초는 호수와 연결된 기나긴 통로를 만들면 어떨까 생각을 하게 됩니다. 결국 판초는 집에서 호수까지 연결되는 기나긴 파이프를 설치합니다. 그렇게 직접 호수에 찾아갈 일은 사라졌습니다. 호수에 물이 말라 있다면 파이프에 물이 흐르지 않을 것이고 호수에 물이 남아있다면 파이프에 물이.. 안드로이드 개발 시 실수 모음 안녕하세요 Loner 입니다. 언제나 열심히 앱 개발 작업중 입니다. 정신 차려보니 벌써, 추석 명절을 맞았고 앱개발 때문에 시간이 항상 바빳지만 오랜만에 여유가 생겨서 블로그를 작성합니다. 명절 이벤트로 안드로이드 개발하면서 한번쯤 경험 할 수 있는 실수들을 모아봤습니다. 제 경험과 함께, 다른 안드로이드 개발자님들의 의견을 모아서 만들어봤습니다. 0. Manifest.xml - 필요한 permission을 추가 안함 - Activity의 export를 추가안함 - useClearTextTraffic 설정을 하지 않아서 삽질 - Service나 receiver 클래스를 만들어두고 manifest 에 설정 안함 1. RecyclerView 사용시 - 어댑터, xml , 로직 다 멋지게 만들었으나 layo.. 안드로이드 개발 (32) LiveData와 MutableLiveData LiveData는 이미 내부적으로 setValue와 postValue가 존재하지만 이를 외부로 공개하지 않고 상속을 받은 서브클래스를 통해 외부로 공개합니다. 그렇기 때문에 이미 안드로이드에서 지원하는 LiveData는 MutableLive라는 서브클래스를 만들어두고 MutableLive에서 set을 허용하도록 개발자에게 환경을 제공합니다. 그렇게 View는 LiveData 에서 읽기만 할 수있고, ViewModel 에서 MutableLiveData를 통해 변경할 수 있는 권한이 생깁니다. 불변과 가변의 차이를 가진 LiveData와 MutableLiveData에 대해 각각 정리해봤습니다. 1.MutableLiveData package androidx.lifecycle; /** * {@link LiveD.. 안드로이드 개발 (31) Activity Life Cycle 프로그래밍에서 주로 사용되는 생명주기(Life Cycle)은 프로그래밍 공학 쪽으로나 다양한 곳곳에서 사용되는 용어입니다. Android 에서 말하는 LifeCycle은 주로 상황에 따라 생성 ~ 제거가 호출되는 전체 단계를 뜻합니다. Google Android는 LifeCycle에 맞게 콜백함수를 제공함으로써, Android 개발자가 특정 생명주기나 전체 생명주기를 이용해서 원하는 상황에 원하는 동작을 실행하도록 코드를 구현할 수 있습니다. Android 에서 Life Cycle은 여러곳에 존재합니다. View, Service, BroadCastReceiver 등등 생성 ~ 제거 되는 순간에 따라 콜백함수를 커스텀 할 수 있습니다. 여러 Life Cycle 중에 실제 개발하면서 자주 신경쓰게 될 Act.. 안드로이드 개발 (30) viewModelScope Android 는 현재 집중적으로 Coroutine 을 밀고 있습니다. Android에서 Coroutine을 응용한 api와 Coroutine 관련된 코드 스니펫 등등이 등장하면서 앞으로 Android에서 Coroutine을 활용할일이 많아지고 있습니다. 그래서 과거 비동기 관련 코드들을 Coroutine 으로 마이그레이션을 진행중이거나 완료한 소식들을 간혹 접하기도 했습니다. 그만큼 Coroutine에 대한 열풍이 뜨겁다고 느껴집니다. 1. ViewModelScope 란? 특히 Jetpack Library 를 많이 사용하는데 Jetpack에 viewModelScope 라는 Coroutine Scope를 지원해줍니다. viewModelScope는 ViewModel에서 onCleared() 호출 할때 직접.. 안드로이드 개발 (29) Fragment에서 ViewBinding 사용 시 주의할 점 1. ViewBinding ViewBinding 은 xml를 자동으로 바인딩 클래스로 생성해서 xml의 View를 안전하게 사용할 수 있습니다. kotlin extension deprecated 이 되고나서 요즘은 ViewBinding, DataBinding을 위주로 사용하는 추세이기도 합니다. Fragment에서 ViewBinding 사용시 주의할 점이 한가지가 있는데 이에 대해 정리를 해보도록 하겠습니다. 2. Fragment 의 LifeCycle Fragment 는 onCreateView에서 View를 생성하기 때문에 2개의 LifeCycle이 존재합니다. Fragment LifeCycle, Fragment View LifeCycle 이 두 가지가 있습니다. Fragment LifeCycle: on.. 안드로이드 개발 (28) ViewLifeCycleOwner 블로그 재작성 시작입니다. jetpack 라이브러리를 사용하다보면 뷰모델 프로바이더를 생성할 때나 라이브 데이타 observe 함수에 매개 변수로 lifeCycleOwner 를 전달해줘야하는 경우가 있습니다. 검색을 하다보면 주로 viewLifeCycleOwner 를 매개변수로 전달하는 예제가 많은데 viewLifeCycleOwner에 대해 알아보도록 하겠습니다. 0. viewLifeCycleOwner 란? Fragment 를 사용하다보면 onCreateView() 함수이 호출 될 때, view 를 생성하고 onViewCreated() 함수에서 이미 생성한 view를 사용하는 경우가 많습니다. viewLifeCycleOwner 는 onCreateView() 에서 생성되는 view의 LifeCycle 를 .. 이전 1 2 3 4 5 6 다음