2018~2020 Android Development
안드로이드 개발에 발을 들인지 벌써 3년째다. 당분간 3-4개월 정도는 여태껏 내가 배운 것들, 그리고 그 과정에서 깨달은 것들을 정리할 것이다. 또한 다큐먼트만 보고 써먹은 개념들의 원리를 파악하는 시간을 가지며 보내고싶다.
Coursera 에서 알고리즘 강의를 들으면서 중간에 교수님께서 해주신 말씀이 생각난다. 자료구조를 대하는 자세는 그 사람의 숙련도에 따라서 다른데, 중수는 Client 입장에서 문제 해결에 필요한 자료구조를 적절히 골라 사용할 수 있는 사람이다. 고수는 단지 Client 입장에 그치지 않고 적극적으로 자신에게 필요한 자료구조를 만들어내는
사람이다. 중수와 고수의 핵심적인 차이는 바로 지식을 소비하느냐, 지식을 생산하느냐
에 달려있다.
안드로이드 플랫폼의 소비자로써 보낸 시간이 벌써 3년이다. 이제는 나도 단순한 소비자에 그치지 않고 생산자로 탈바꿈할 때가 된 것 같다.
목차
A. 레이아웃 관련 내용들
-
레이아웃 관련 지식
- xml 이 왜 사용되었는지, 장점과 단점, 동작 원리
- Data Binding 이 왜 등장하였는가, 장점과 단점, 동작 원리
- Jetpack Compose 가 안드로이드 레이아웃 패러다임을 어떻게 바꾸는지.
- Constraint Layout 의 장점과 단점, 활용 방법.
- Material Design Guide 에서 참고하면 좋은 점들, Customizing TIP.
- 프로젝트 예시 : 긴 텍스트가 있는 카드뷰를 만드는 경우
-
RecyclerView
- 핵심 개념
- 동작 원리
- Customizing : 채팅 화면 만들기
- Abstraction : 보일러플레이트 코드를 조금이라도 줄일 수 있는 방법
- Jetpack Compose 에서 아주 간단해지는 리스트 만들기
- 번외) Setting 화면 만들때도 RecyclerView 를 사용해야 하나?
- 번외) RecyclerView Swipe / Pull to Refresh 구현하기
-
ViewPager/ViewPager2
- 핵심 개념
- 동작 원리
- Customizing : 마진 조정해서 한 화면에 여러 페이지 띄우기, 페이지를 원형으로 띄우기 등
- Fragment 와 결합된 ViewPager 에 대하여 : 탭 화면 만들기
-
Widget 만들기
- 위젯의 동작 개념 (브로드개스팅)
- 위젯을 만들 때 유의할 점들
- 사이즈 정하고 위젯에 데이터 띄워보기 (RSS 프로젝트 코드 예시로 설명하기)
-
Layout관련 프로젝트 코드 설명
- 트래곤 : 접혔다가 펴지는 Collapsible Card 만들기, 데이터 띄우기
- 마이펫밀리 : 동적으로 추가되는 펫 카드 만들기
- 핫초코 : Bottom Sheet Dialog 백그라운드 커스터마이징 하기
- 영화포스터 : Scrim Gradient 를 이용한 collapsible layout
-
UI 테스팅
- UI 테스팅 예시 (구글 코드랩 참고)
- 에스프레소 맛보기
B. 아키텍처
- MVP
- MVC
- MVVM
- MVI
C. 네트워킹
-
Retrofit
- 동작 원리
- 인터셉터 활용하기
- 서버에서 유저에이전트로 클라이언트 구분해주었던 경험
- 폼 데이터 전송하기
- 네트워킹 코드에 의존성 주입한 경험 (트래곤, Hilt)
-
Volley
- Retrofit 과 다른 점 ? 장점과 단점.
- Volley 를 사용해 네트워킹 처리한 프로젝트 예시 코드
-
Java HttpRequest 로 직접 처리하기
D. 로컬 데이터베이스
- SQLite 어쩌구 API 사용해보기
- Room API 사용하기
- 프로젝트 예시 코드
- API 사용하는 단계, DB 생성 코드 설명, 내부 동작 원리
E. 사용자 권한 받기
- 안드로이드 최신 권한 관련 룰
- 권한을 보통은 한꺼번에 받는다. (시중 앱 스크린 캡처, 구현해보기)
- 서버에 알림 관련 설정 전달하기
- 약관 동의 화면 구현 경험 공유해보기
F. 성능 개선
- 네트워킹 Pagination 구현하기
- 로컬 DB 에 캐싱하기
- Leak Canary 사용해서 메모리 누수 감지하기
- 예시 코드 작성해보기 - TMDB API 사용해서 pagination, 이미지 캐싱, 메모리 누수 감지 테스트 작성해보기