본문 바로가기
우아한테크코스 5기/정리

우아한테크코스 5기 모바일 레벨2 총정리

by 코드 이야기 2023. 6. 18.
728x90

 

 

2023 안드로이드 로드맵

 

안드로이드에 있어 전반적인 것을 배울 수 있었다.

또한 아키텍처 패턴 MVC, MVP에 대해 이해할 수 있었다.

4대 컴포넌트에서는 Activity만 미션에 녹여낼 수 있었다. 

 

1. 안드로이드 기초 (영화: 티켓 예매)

안드로이드의 기초인 Activity, 화면 등에 대해 알 수 있었다.

이외에도 도메인 모듈을 분리하는 방법을 배웠다.

  • Activity
  • Intent
  • Context
    • 애플리케이션의 실행 문맥(Context)에 대한 정보를 제공하고 시스템 서비스와 애플리케이션의 리소스에 접근할 수 있게 함. 예를 들어 Activity, Service, Broadcast Receiver 등에서 Context로 리소스를 참조할 수 있다.
    • Application Context vs Activity Context
      무조건 Application Context를 활용하면 안되는 이유가 뭘까?
      Application Context가 지원하지 않는 기능은 없을까?
      생명주기에 의존적인 Context를 활용하는 것이 적절할 때는 언제일까?
  • LifeCycle
  • View 컴포넌트
    • View: 하나하나의 개별 UI 요소
    • View Widget: View의 하위 클래스, 미리 설계된 UI 요소
    • ViewGroup: View의 하위 클래스, View를 묶는 컨테이너
  • Date → LocalXXX: 변경이 가능해 유지보수에 불리하다. Data라는 이름에 시간 정보까지 가지고 있어 혼동될 수 있다.
  • Serializable vs Parcelable
    • Serializable은 내부 구현에 리플렉션을 사용하여 이를 해결하기 위해 Parcelable이 나오게 되었다.
  • dp vs sp
    • dp: View의 크기를 지정할 때 사용. px을 사용할 경우, 화소수에 따라 View의 크기가 다르기 때문.
      dp는 160dpi를 기준으로 화소수에 맞추어 적정 크기로 잡는다. 즉, 기기별 대응에 용이
    • sp: 글자의 크기를 지정할 때 사용. 안드로이드 시스템 설정에 따른 글자 크기 변경에 대응되기 때문.
  • 화면 회전시 데이터 유지

 

2. 안드로이드 심화 (영화: 극장 선택)

  • Fragment
    • 트랜잭션
      • Fragment에 추가할 변화에 대한 집합.
      • FragmentManager를 통해 add, remove, replace 등의 작업을 수행할 수 있음.
        transaction을 적용시키기 위해 commit을 사용해야 함.
        commit은 main ui thread에 transaction이 가능할 때 scheduled이 됨.
    • add + hide + show / replace
      • replace: 한 화면에 하나의 프레그먼트가 보이고, 해당 프래그먼트와 같은 위치에서 프래그먼트가 변경되는 상황
      • add + hide + show: 한 화면에 fragment가 여럿 보일 때, 상황에 따라 일부 화면의 fragment가 보이거나 보이지 않아야하는 상황
  • Broadcast Receiver
  • MVP
    • MVC: Model(및 도메인 로직)과 View(입출력 등)을 중재하는 Controller.
      그러나 안드로이드에서는 View(Activity)가 앱의 진입점(Controller)의 역할도 하고 있어 생긴 것이 MVP
    • MVP: 안드로이드식 MVC. Activity(View)로부터 필요한 것을 전달받아 사용.
  • Test Double
  • Unit Test
    • 실제 실행해 테스트하는 것보다 정확, 추적 용이, 확장 용이, 시간 효율 증가
    • Domain Test
    • Presenter Test 
    • UI Test (Espresso, Robolectric)
  • Databinding
  • ListView와 RecyclerView
    • RecyclerView를 권장하는 이유: list item view 재사용 강제 (ListView도 재사용 가능), 아이템 추가 삭제 시간 효율이 좋음, LayoutManager를 지원해 가로로 표시하거나 한 줄에 두개씩 표현하는 등의 커스텀이 용이

 

3. 데이터 로딩, 상태 관리 (장바구니: 로컬)

  • 페이지네이션
  • 무한 스크롤
  • 복잡한 상태 관리 (LiveData)
  • List (concat / view type / nested) 
    • concat
      • 두개 이상의 리스트를 순차적으로 연결시킬 때 사용한다. 하나의 어댑터에서 여러 어댑터를 관리할 필요가 없어지므로 분리가 명확해지고 관리가 용이해진다.
      • ConcatAdapter.Config 내부 동작에 대한 이해가 부족한 채로 사용하면 예상치 못한 부수 효과가 있을 있다.
    • view type
      • 하나의 리스트에서 다른 생김새의 item을 사용할 경우 view타입을 이용한 방법이 적절하다.
      • 여러 리스트를 View Type으로 구분해 구현할 경우 관리가 불편해 변경에 불리하다.
    • nested
      • 구현이 간단하다.
      • 아이템의 재사용이 불가하다. 서버로부터 값을 가져올 때는 어느정도의 데이터가 들어올지 없기 때문에 아이템이 많을 있어 부적절하다.

 

4. 협업, 비동기 (장바구니: 협업)

  • REST API
  • HTTPS
  • ...

 

 

 


추가로 정리해야할 부분

 

 

728x90

댓글