우아한테크코스/Level 2

우아한테크코스/Level 2

Context?

💡 Intro 안드로이드에서 중요한 요소 중 하나인 컨텍스트. 컨텍스트가 없으면 안드로이드에서는 아무것도 할 수 없다. 그만큼 중요한 요소지만 나는 얼마나 알고있을까? 에 대해 생각해봤고, 깊은 이해가 있다고 생각되지 않기 때문에 정리하게 되었다. ❓ Context 공식문서를 보면 컨텍스트를 다음과 같이 정의한다. Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well a..

우아한테크코스/Level 2

[View] 0dp vs match_parent in ConstraintLayout

💡 Intro 우테코에 들어오면서 ContraintLayout을 처음 써봤고, 지금까지도 적응중이다. 많이 익숙해졌지만 아직까지도 실수하는 부분들이 많다. 그리고 더 깊게 알아보기 전까지 0dp == match_parent 이지만 ConstraintLayout에서는 0dp를 쓰는 것이 맞구나 했다. (아님) ❓ ConstaintLayout 아주 간단하게 ConstraintLayout이 무엇인지 알아보자. Constraint과 Layout을 합친 단어다. Constraint는 '제약 조건'을 뜻하는 단어이며 이에따라 뷰를 정렬하고 배치하는 레이아웃이다. 여기서 말하는 제약에는 어떤 것들이 있을까? Relative Positioning, Margins, Centering positioning, Circul..

우아한테크코스/Level 2

[Life Cycle] Activity LifeCycle

💡 Intro Activity, Fragment, View는 각각의 LifeCycle(생명주기)을 가지고 있다. 모두 다뤄볼 예정이며, 먼저 Activity LifeCycle에 대해 알아보자. ❓ 액티비티 상태 액티비티는 총 4가지의 상태를 가지고 있다. 각 상태의 명칭과 특징은 다음과 같다. 존재하지 않음(nonexistent) 액티비티가 아직 론칭되지 않았거나 소멸된 상태 액티비티 인스턴스는 메모리에 존재하지 않음 사용자가 보거나 상호작용하기 위한 뷰가 존재하지 않음 중단(stopped) 액티비티 인스턴스가 메모리에 존재함 액티비티가 화면에서 완전히 가려졌을 때의 상태(화면에 액티비티가 전혀 보이지 않음) 일시중지(paused) 액티비티가 포그라운드에서 작동하지 않음 액티비티 전체 혹은 일부가 화면에..

우아한테크코스/Level 2

[Inflation] Inflation?

💡 Intro 레벨 인터뷰를 준비하기 위해 Do It 안드로이드 앱 프로그래밍 책을 꺼내보았고, 인플레이션에 대해 설명하려고 보니 부족함을 느꼈다. 최근에 정리한 글들과 비교하면 기본적인 내용이라고 생각할 수 있지만, 기본이 가장 중요하다고 생각하기 때문에 이해한대로 정리해보려고 한다. ❓Inflation 단순히 XML레이아웃 파일을 만들었다고 소스코드에서 뷰를 참조할 수 없다. 왜? 아직 메모리에 올라가있지 않으니까!  그럼 어떻게 해야할까? 인플레이션은 XML레이아웃의 내용이 메모리에 객체화되는 과정이다. 일반적으로 액티비티나 프래그먼트가 생성될 때 setContentView 메서드로 XML레이아웃을 인플레이션하고 화면에 표시한다. 이 과정에서 XML레이아웃 파일에 정의되어 있는 뷰들은 해당 액티비..

우아한테크코스/Level 2

[Design Pattern] Repository Pattern

💡 Intro 장바구니 미션 Step 1&2 단계 피드백 수업과 함께 Repository 패턴에 대해 배웠다. 하지만 이게 무엇인지 이해하지 못한 상태였고, 이대로는 미션에 어떻게 적용하지 못하겠다는 생각이 들었다. 안드로이드 장인 멘데루에게 도움을 요청해 1:1 명강의를 들었고, 내가 이해하고 적용한 Repository 패턴에 대해 정리하려고 한다. ❓ 안드로이드 아키텍쳐 계층 Repository 패턴에 대해 알아보기 전에 안드로이드 아키텍처 계층에 대해 간단하게 알아보자. 안드로이드 아키텍쳐는 Ui Layer(Presentation Layer), Domain Layer, Data Layer 총 3가지 계층으로 나눠진다. 그리고 각 계층이 하는 일은 다음과 같다. Ui Layer(Presentation..

우아한테크코스/Level 2

[Data Binding] Binding Adapter

💡 Intro 영화 선택 미션부터 DataBinding을 사용하기 시작했다. 하지만 지금까지 내가 사용하고 있는 방식은 ViewBinding과 다를 것이 없다. DataBinding은 xml에 데이터를 넣어 뷰(Activity or Fragment)에서 처리하지 않아도 되는 강력한 기능을 제공하는데 이해가 부족해서 이 부분을 사용하지 못하고 있었던 것이다. 장바구니 step1&2 미션의 리뷰 중 다음과 같은 리뷰가 있었다. ProductViewHolder와 CartProductViewHolder는 거의 유사한 코드로 작성되어 있습니다. 중복 코드를 개선해보면 어떨까요? 처음에는 중복코드를 줄이기 위한 추상화를 생각했다. 어떤 방식으로 하는게 좋을까 조언을 구하다 산군을 만났고, DataBinding의 바..

우아한테크코스/Level 2

Serializable vs Parcelable

💡 Intro 미션을 진행하면서 내가 만든 객체(Class)를 다른 컴포넌트에 넘겨야하는 시점이 등장했다. 일단 먼저 마주한 것은 Intent를 통해 넘기는 것이었다. intent의 putExtra함수를 사용하면 기본적으로 사용하는 자료형은 넘겨줄 수 있지만 내가 만든 클래스의 형태는 넘길 수 없다. 그럼 어떻게 해야할까? 바로 직렬화다. 그게 뭔지, 그리고 어떻게 사용하는지 알아보자. ❓ 직렬화? 직렬화는 메모리 내에 존재하는 정보를 보다 쉽게 전송 및 전달하기 위해 바이트코드 형태로 나열하는 것이다. 여기서 말하는 메모리 내에 존재하는 정보는 아마도 우리가 만든 객체가 될 것이다. 직렬화와 역직렬화는 객체의 상태를 저장하거나 전송하기 위해 사용된다. 예를 들어, 네트워크를 통해 객체를 전송하기 위해서..

우아한테크코스/Level 2

[DataBinding] 데이터 바인딩 사용하기

💡 Intro 데이터 바인딩은 Ui요소와 데이터를 프로그래밍적인 방식으로 연결하지 않고, 선언적 형식으로 결합할 수 있도록 도와주는 라이브러리다. 데이터 바인딩은 뷰 객체를 참조하는 것이 아니라 뷰 객체가 보여주는 데이터를 가진 변수를 제어한다. 즉, 뷰에 데이터를 가지고 있는 변수를 처음에 설정해주면 그 변수의 값이 보여질 것이고, 버튼을 클릭하는 등의 이벤트가 발생했을 때 뷰들을 참조하여 제어하는 것이 아니라 뷰에 설정되어 있는 변수의 값을 변경하면 그 뷰가 보여주는 데이터가 바뀌고 화면도 바뀌게 된다. 체감하기 가장 좋은 이점은 뷰 객체를 제어할 필요가 없기 때문에 findViewById() 함수를 사용하지 않아도 되고, 이 덕분에 코드가 줄어드는 부분이다. 영화 극장 선택 미션을 시작하면서 데이..

Krrong
'우아한테크코스/Level 2' 카테고리의 글 목록