본문 바로가기

분류 전체보기239

[안드로이드 면접] - 14 : 1. 뷰가 렌더링에 대한 용어 정리 더보기 디스플레이 : 안드로이드 단말기가 가지고 있는 하드웨어 화면을 의미한다. 윈도우(Window) : 안드로이드에서 실행되는 App 이 그림(View)을 그릴 수 있는 영역을 의미한다. 사용자로부터 입력(터치, 키) 이벤트를 받아 앱에 전달한다. 서피스(Surface) : 화면에 합성되는 픽셀을 보유한 객체이다. 화면에 표시되는 모든 윈도우에 자신만의 서피스가 포함되어 있으며, 서피스 프린저가 여러 소스로부터 그래픽 데이터 버퍼를 받고 그것을 합성해 디스플레이로 보낸다. 즉, 그림(뷰)을 그릴 때 그림이 저장되는 메모리 버퍼를 의미한다. 캔버스(Canvas) : 실제 UI 를 그리기 위한 공간으로 비트맵이 그려지는 공간이라고 생각하면 된다. 뷰 : 사용자 인터페이스.. 2023. 2. 13.
[안드로이드] MVVM 패턴과 안드로이드 MVVM 패턴 마이크로소프트 MVVM 패턴 VS Google AAC ViewModel (android mvvm pattern) 처음에 굉장히 혼잡했다.. AAC ViewModel 개념을 볼 때 이게 MVVM 과 다르다는 말을 하는데, 무엇이 다르다는 지 처음에는 많이 헷갈렸다. 그래서 오늘 MVVM을 톺아보려 한다. 이번 블로그에서는 Google AAC ViewModel 과 Microsoft 아키텍트 존 구스먼이 발표한 MVVM 의 ViewModel 차이를 가지고 설명할 것 같다. MVVM 패턴은 마틴 파울러의 MVP(프레젠테이션 모델) 디자인 패턴을 변형하여 만든 것이고, 2005년에 마이크로소프트 아키텍트인 '존 구스먼' 이 처음으로 공개해 세상에 알려졌다. 구글은 '존 구스먼'이 발표한 MVVM 패턴과 흡사하게 .. 2023. 2. 11.
[안드로이드 면접] - 13 : 1. Vector 와 Bitmap 차이는? 더보기 Vector (ai, eps, svg) 점과 점을 연결하여 수학적 원리로 그림을 그려 표현하는 방식 이미지를 리사이징(크기를 늘리고 줄여도) 하여도 손상이 되지 않는다. 하지만 사진과 같은 복잡한 그림을 표현하려면 컴퓨터에 부담을 줄 수 있다. Bitmap (jpg, jpeg, png, gif) 서로 다른 많은 점(픽셀)들의 조합으로 그려지는 이미지 표현 방식 비트맵 이미지는 정교하고 화려한 표현이 가능(주로 사진 이미지에 사용) 하지만 리사이징(크기를 늘리고 줄이는) 하면 원본 이미지에 손상이 갈 수 있음. 2. View 와 ViewGroup 차이는? 더보기 View 안드로이드 화면의 구성요소이다. 화면에 보이는 모든 것은 View 이다. View는 자.. 2023. 2. 9.
[안드로이드 면접] - 12 : 1. 코틀린 Any, Unit, Nothing 타입을 설명하시오. 더보기 Any : 자바에서 Object 가 클래스 계층의 최상위 타입이듯, 코틀린에서는 Any 가 그 역할을 한다. 자바 Object 와 차이는 자바는 참조 타입만 Object 를 정점으로 하는 타입 계층에 포함되지만, 코틀린은 Int 와 같은 원시 타입도 포함할 수 있다. Unit : 자바와 Void 는 같은 기능이다. 자바와 다른 점은 Unit 은 모든 기능을 갖는 일반적인 타입이라는 점이다. Unit 타입에 속한 값은 단 하나 뿐이며, 그 이름도 Unit 이다. void 와 달리 Unit 은 타입 인자로도 사용 가능하다. Unit 타입의 함수는 Unit 값을 묵시적으로 반환하게 된다. Nothing : 코틀린에는 결코 성공적으로 값을.. 2023. 2. 7.
[안드로이드 면접] - 11 : 1. 람다함수와 고차함수와 익명함수를 설명하시오 더보기 고차함수(High Order Function) 매개 변수 또는 반환 값으로 또 다른 함수(람다)가 사용되는 함수를 말한다. 자바에서 많이 들어봤던 콜백함수가 그와 비슷하다. 과거 자바 8버전에서 '람다' 를 발표하기 이전까지 함수를 매개 변수로 전달하기 위해서는 해당 함수가 선언된 인터페이스를 구현한 클래스를 정의하고 객체를 생성하여 그 객체를 매개 변수로 전달하는 방법을 주로 사용했다. 안드로이드 API24 이후부터 람다 사용이 가능해지면서 위와 같은 방법 구현이 쉬워졌다. 람다식(Lambda) 함수 간단하게 말하면 메서드를 하나의 식으로 표현한다고 말할 수 있다. 이로 이루어진 함수를 일컫는다. 람다식으로 만들어진 함수는 이름이 없고 반환값이 없.. 2023. 2. 3.
[안드로이드] - ListAdapter ListAdapter 간단하게 설명하면 DiffUtil 유틸 클래스를 활용해서 아이템 업데이트를 할수 있는 기능을 추가한 Adapter 이다. AsyncListDiffer 를 더 쓰기 편하도록 랩핑한 클래스이다. RecyclerView.Adapter 가 ListAdapter 를 상속하게 하고, 초기화 시 DiffUtil 콜백 객체를 넘겨준다. submitList() 로 전체 데이터를 넘겨주면 adapter 가 백그라운드 스레드를 사용해 리스트 차이를 계산하여 화면을 갱신한다. 위 설명을 보면 왜 ListAdapter 가 RecyclerView 를 사용하는 것보다 효율적이라는 게 이해가 안될 수 있다. https://devnuts.tistory.com/205 [안드로이드] - DiffUtil 이란? (+A.. 2023. 2. 2.
[안드로이드] - DiffUtil 이란? (+AsyncListDiffer) 왜 DiffUtil 를 알아보는거야? 우리는 RecyclerView 를 사용할 때 RecyclerView.Adpater 에 notify 변경 메소드로 알려 아이템 변경을 감지하고 갱신할 수 있다는 것을 알고 있다. 보통 아이템 업데이트가 필요할 때, 아래의 메서드를 사용했다. public final void notifyDataSetChanged() { mObservable.notifyChanged(); } 전체 아이템을 다시 그리는 용도로 사용되는 메서드이다. 아이템 업데이트 과정에서 지연이 길어지면 UX에 영향을 미치기 때문에 가능한 적은 리소스와 함께 빠른 작업이 이루어져야 한다. 목록의 내용이 변경되면 notifyDataSetChanged()를 호출하여 아이템을 업데이트하지만 비용이 많이든다. 그래.. 2023. 2. 2.
[안드로이드 면접] - 10 : 1. Thread 와 Process 를 설명하자면? 더보기 프로세스는 메모리 상에서 실행 중인 프로그램을 일컫는다. 스레드는 이 프로세스 안에서 실행되는 흐름 단위를 말한다. 프로세스는 최소 하나의 스레드를 보유하고 있고, 각각 별도의 주소 공간을 독립적으로 할당 받는다. 스레드는 이 중에 Stack 만을 따로 개별적으로 할당 받고, 나머지 영역은 스레드끼리 서로 공유할 수 있다. 2. Process 가 가진 단점과 스레드 출현 목적은? 더보기 프로세스의 문제점 프로세스 생성에 큰 오버헤드가 있다. 프로세스 컨텍스트 스위칭이 비효율적이고, 이 또한 오버헤드가 크다. 프로세스 사이에 통신이 어렵다. (IPC 를 사용해야 함) 스레드의 출현 목적 프로세스보다 크기가 작은 실행 단위 필요했다 프로세스의 생성 .. 2023. 2. 2.