전체 글 426

[Android] 이미지 로딩 라이브러리 - Coil

Coil은 Coroutine Image Loader의 약자이며 Kotlin Coroutines(코루틴)으로 만들어진 가벼운 Android 백앤드 이미지 로딩 라이브러리입니다. 코루틴자체가 내장이 되어 있어 코루틴 라이브러리를 별도로 설치하지 않아도 되는 장점이 있습니다. 장점 Glide, Fresco보다 상대적으로 가볍다. 코루틴이 기본이지만 메인까지는 아니며 심플함과 최소한의 보일러 플레이트(boilerplate)를 위하여 Kotlin의 기능을 활용하여 Kotlin을 잘 다룬다면 사용하기가 매우 쉽다. 메모리와 디스크의 캐싱, 메모리의 이미지 다운 샘플링, Bitmap 재사용, 일시정지/취소의 자동화 등등 수 많은 최적화 작업을 수행하므로 처리 속도가 굉장히 빠릅니다. 다이나믹 이미지 샘플링을 지원하며..

안드로이드 2021.05.17

Storage Scope

Storage Scope란? - 개별 앱 공간이 샌드박스 형식으로 격리되어 다른 앱의 파일에 직접 접근할 수 없게 하는 방식을 말합니다. targetSdkVersiond을 29로 올리면 아래와 같이 Deprecated 됩니다. @Deprecated public static File getExternalStorageDirectory() 공용 저장소에 접근할 때는 MediaStore 또는 Intent(ACTION_OPEN_DOCUMENT)를 사용해야 된다고 합니다. 공용 공간은 MediaStore을 통해서만 읽고 쓸 수 있습니다. 혹은 SAF를 사용해 파일을 가져올 수 있습니다. 저장소 Android Q이전 외부 저장소 : 외부 저장소 권한이 있으면 누구나 접근이 가능 - READ_EXTERNAL_STORA..

안드로이드 2021.05.14

ViewBinding

현재 가장 많이 사용되는 Data Binding의 목적은 View와 Model을 엮어주는 역할인데 많은 개발자들이 단순히 View에 대한 참조를 얻기 위한 목적으로 Data Binding을 사용하는 것을 보고, 구글에서 View에 대한 참조를 얻기 위한 목적으로 오늘의 View Binding이 탄생하게 되었다고 한다. 특징 - Null안전 : 뷰의 직접 참조를 생성하므로 유효하지 않은 뷰 ID로 인해 null포인터 예외가 발생할 위험이 없습니다. 또한 레이아웃의 일부 구성에만 뷰가 있는 경우 결합 클래스에서 참조를 포함하는 필드가 @Nullable로 표시됩니다. -유형 안전 : 각 바인딩 클래스에 있는 필드의 유형이 XML파일에서 참조하는 뷰와 일치하기 때문에 클래스 변환 예외가 발생할 위험이 없습니다...

안드로이드 2021.05.13

Kotlin apply, with, let, also, run 사용?

범위 지정 함수는 무엇을 하는가? 이 5가지 함수는 기본적으로 매우 비슷한 기능을 합니다. 이 함수들은 두가지 구성 요소를 가집니다. 수신 객체 수신 객체 지정 람다 (lambda with receiver) with, also, apply, let, run 은 아래의 3 가지 차이점 중 1 가지가 서로 다릅니다. 범위 지정 함수 의 호출시에 수신 객체가 매개 변수로 명시적으로 전달되거나 수신 객체의 확장 함수로 암시적 수신 객체 로 전달된다. 범위 지정 함수 의 수신 객체 지정 람다 에 전달되는 수신 객체가 명시적 매개 변수 로 전달 되거나 수신 객체의 확장 함수로 암시적 수신 객체로 코드 블록 내부로 전달 된다. 범위 지정 함수의 결과로 수신 객체를 그대로 반환하거나 수신 객체 지정 람다 의 실행 결과..

안드로이드 2021.05.11

Android 멀티 모듈

모듈은 안드로이드 디벨로퍼 사이트에 다음과 같이 정의 되어있습니다. 모듈은 소스 파일 및 빌드 설정으로 구성된 모음이며, 이를 통해 프로젝트를 별개의 기능 단위로 분할할 수 있습니다. 프로젝트에는 하나 이상의 모듈이 포함될 수 있으며, 하나의 모듈이 다른 모듈을 종속성으로 사용할 수 있습니다. 각 모듈은 개별적으로 빌드, 테스트 및 디버그할 수 있습니다. 모듈 생성 새로운 모듈의 생성은 File - New - New Module과 같은 과정으로 이루어 집니다. Module(app)과 Android Library, Java Library의 차이 Module은 전체의 어플리케이션 없이 부분적으로 디버깅 할수 있고 테스트 할 수 있는 작은 부분이라고 할 수 있습니다. 반면, Android Library는 어플..

안드로이드 2021.05.11

Merge 이해하기 (Merge / Squash and Merge / Rebase and Merge)

Merge : 하나의 브랜치와 다른 브랜치의 변경 이력 전체를 합치는 방법이다. Squash and Merge : commit a + b + c를 합쳐서 새로운 commit, abc를 만들어지고 master에 추가된다. abc는 1개의 parent를 가진다. feature 브랜치의 commit history를 합쳐서 깔끔하게 만들기 위해 사용한다. my-branch의 여러 개의 history가 하나로 합쳐져서 새로운 commit을 생성한다. Rebase and Merge : 모든 commit들이 합쳐지지 않고 각각 master 브랜치에 추가된다. 참조 : im-developer.tistory.com/182

Git 2021.05.06