개발을 파헤치다/Android(29)
-
[Android] 앱 개발시 의존성 주입(Dependency Injection) 적용하기
의존성 주입이라는 개념을 알기 위해서는 먼저 의존성을 알아야 합니다. 하나의 클래스 안에서 다른 클래스를 초기화하고 필요한 메서드를 호출하는 일은 생각보다 많습니다. 별생각 없이 이렇게 코딩했다면 서비스 규모가 커지고 추후에 새로운 기능 추가나 코드 변경 시 정말이지 난감한 상황을 겪을 수 있는데요. 이 난감한 상황이 바로 클래스 간의 의존성 때문에 발생합니다. 그럼 먼저 의존성이 뭘 의미하는지, 그리고 어떤 문제가 발생하는지 한번 알아봐야겠죠? 아래 간단한 코드를 보면서 설명을 해보겠습니다. class Car{ private val engine = Engine() fun start(){ engine.start() } } fun main(args: Array){ val car = Car() car.sta..
2023.03.17 -
[Android ViewPager2] Pager Adapter의 아이템 변경시 발생하는 동시성 문제 해결하기
ViewPager2는 안드로이드 앱 개발을 할 때 대표적으로 쓰이는 레이아웃 컴포넌트입니다. 옆으로 쓸어서 탭 이동을 하거나, 이미지 슬라이드 등 활용하는 곳이 상당히 많습니다. ViewPager2로 화면을 구성할 때 Pager Adapter를 필수적으로 구현을 하는데요. 여러 Fragment들을 여기에 붙였다 없앴다하는 경우 의도와는 다르게 동작하는 상황이 발생합니다. 이번에는 Pager Adapter에 특정 Fragment를 지우고 새로운 Fragment를 추가했을 때 기존 Fragment가 나오는 문제의 원인과 해결 방법을 알아보도록 하겠습니다. 문제상황 ViewPager2를 사용하다보면 내부 Fragment에 이동이 있거나 삭제하고 새로운 Fragment를 추가하는 등의 작업이 생길 수 있습니다...
2023.03.16 -
[안드로이드] 삼성의 다양한 기기로 테스트 및 디버깅(Remote Debugging)하는 꿀팁!
안드로이드 앱 개발할 때 제일 힘든 부분 중 하나가 바로 기기 파편화 문제입니다. 수 많은 기기에서 어떤 오류가 발생할지 모르기 때문에 다양한 기기에서 테스트를 해보아야하는데요. 삼성에서는 감사하게도 Test Lab이라는 서비스를 제공합니다. 안드로이드 생태계 대부분을 차지하는 삼성의 스마트폰 기기를 온라인으로 사용할 수 있도록 해주는 서비스죠. 많은 분들이 개발한 앱 테스트에 이용을 하는데요. 단순히 앱을 다운로드해서 테스트하는 것 말고 다르게도 쓸 수 있다는 사실 아시나요? 개발할 때 안드로이드 폰이 없어 실제 기기에서 빌드하고 싶을 때. 다양한 기기에서 발생하는 버그를 잡기 위해 디버깅할 때에도 사용할 수 있습니다! 그 방법을 지금 바로 알려드리겠습니다. ADB 설치 삼성 테스트랩에 가입하면 대부분..
2023.03.06 -
[최신] 안드로이드 Kotlin 갤러리에서 이미지 가져오기
이미지 처리는 앱 개발 시 필수적으로 다루게 되는 부분입니다. 특히 갤러리에서 이미지 가져오기는 정말 흔하게 쓰이게 되는데요. 하지만 최근 startActivityForResult가 Deprecated 되어 약간 구현 방식이 바뀌게 되었죠. 이에 대한 내용은 많이 없더군요. 오늘은 registerForActivityResult를 활용해 갤러리에서 가져온 이미지를 ImageView에 보여주는 부분을 상세하게 알려드리겠습니다. 갤러리 이미지 처리 로직 구현 가장 먼저 Activity에 아래 변수들을 선언해주어야 합니다. companion object{ const val REVIEW_MIN_LENGTH = 10 // 갤러리 권한 요청 const val REQ_GALLERY = 1 // API 호출시 Param..
2022.06.15 -
[Android] RecyclerView 사용시 흔하게 겪는 에러 해결방법 총정리!
Android 앱을 개발하면서 가장 필수적이고 많이 쓰이는 View가 있다면 저는 당연 RecyclerView를 얘기할 것 같습니다. 그만큼 많이, 흔하게 쓰이는 View인데요. 하지만 많이 쓰이는 것과 잘 사용하는 것은 전혀 다른 얘기입니다. Adapter, ViewHolder 이 정도만 개념을 익히고 구현해보면 금방 사용할 수 있긴 합니다. 그렇지만 실서비스를 개발하다 보면 여기에서 정말 크고 작은 문제가 많이 발생하죠. 이번에는 RecyclerView 사용할 때 겪을 수 있는 에러 상황들을 살펴보고 원인과 해결방법을 알려드리겠습니다. 혹시 지금 에러를 맞닥뜨렸나요? 끝까지 한번 읽어보세요. 분명 도움이 될껍니다. 아이템 뒤섞임 문제 해결 RecyclerView를 사용하다 보면 스크롤 시 아이템이 마..
2022.03.18 -
[Android] 로컬 데이터베이스 Room 사용법 총정리
Room은 안드로이드에서 손쉽게 사용할 수 있는 로컬 데이터베이스입니다. Realm에 비해 굉장히 낮은 용량(약 64kb)을 차지하면서도 꽤 괜찮은 성능과 쉽게 사용할 수 있다는 장점이 있습니다. 안드로이드 클라이언트에서 데이터를 처리해야 한다면 이 가이드를 보고 약 30분 정도면 적용이 가능하리라 생각합니다. 설치하기 App 레벨의 build.gradle에 아래와 같이 추가해줍니다. // Room Database implementation 'androidx.room:room-runtime:2.4.1' kapt 'androidx.room:room-compiler:2.4.1' Kotlin에서는 kapt 컴파일러 플러그인과 함께 사용하도록 되어있기때문에 아래와 같이 플러그인 설정도 추가해주어야 합니다. //..
2022.01.22