본문 바로가기

전체 글236

[안드로이드 면접준비] - 0 : 하루에 하나 One a day 하루에 하나, 오늘부터 하루에 한 번 면접 관련 내용을 블로그에 업로드할 예정이다. 하루종일 개발을 하다보면 엄청 많은 정보가 내 머릿속에 들어갔다 나가지만 정작 기억에 남는게 없다.. 이해만하고 적용을 하다보니 내 머릿속에 잠깐 지식이 앉았다가 나가는 기분이다. 그러다보니 내가 이해한 내용을 설명하고 정리하기가 어렵다. 그래서, One a day (하루에 하나) 를 실천해볼 생각이다. 안드로이드 면접 블로그 내용을 내가 알고 있던 지식, 이해한 부분과, 여타 다른 블로그 글을 읽고 참고해서 글을 작성할 예정이다. 하루에 3~5개씩 정리할 예정이다. 주제는 CS[운영체제, 네트워크, 알고리즘, 자료구조], Android[디자인패턴, 아키텍처, Jetpack, 기본]를 다룰 생각이다. 기.. 2023. 1. 21.
[안드로이드] - Flow (coroutine) - 0 안드로이드에서 비동기 처리를 위해서 코루틴을 사용한다. 우리는 개발 시, LiveData 대신하여 Flow 를 사용할 수 있다. 하지만, Flow 는 스스로 라이프사이클을 알지 못하기 때문에 CoroutineScope 를 잘 이해하고 사용하여 불필요한 메모리 사용을 방지해야 한다. LiveData VS Flow LiveData 는 UI 에 밀접하게 연관되어 있기 때문에 Data Layer 에서 비동기 방식으로 데이터를 처리하기에 자연스러운 방법이 없다. 또한 LiveData 는 안드로이드 플랫폼에 속해 있기 때문에 순수 Java / Kotlin 을 사용해야 하는 Domain Layer 에서 사용하기에 적합하지 않다. 반면 Flow 는 스스로 안드로이드 생명주기에 대해 알지 못하여, 라이프사이클에 따른 중.. 2023. 1. 18.
[안드로이드] - coroutine (코루틴) - 0 코루틴을 알기 위하여, 프로그램 실행을 훑기 보통, 프로그램이 실행되는 과정을 한 번 정리를 해보자. 프로그램이 실행이 되면, 실행된 코드가 메모리에 load 가 된다. load 된 인스턴스를 프로세스라고 일컫는다. 프로세스는 여러 개의 독립된 실행의 흐름을 갖게 된다. 이 실행 흐름 하나하나를 Thread 라고 한다. 프로세스는 자기가 사용하기 위해 메모리를 할당 받는다. 그걸 Heap 이라 한다. 프로세스 안에서 돌아가는 각 각의 Thread 가 존재하는데, 그 스레드 메모리를 Stack 이라 부른다. 또한, 스레드는 프로세스 안에 있는 Heap 안 자원을 각 Thread 끼리 공유할 수 있다. 여기서 코루틴은 Thread Stack 을 할당을 받지 않고, 프로세스에 할당된 Heap memory 를 .. 2023. 1. 18.
[안드로이드] - coroutine (코루틴) - 1 코루틴 코루틴은 루틴의 일종이다. co + routine 으로 협동하는 루틴이라고 한다. 코루틴은 이전에 자신의 실행이 마지막으로 중단되었던 지점에 그 다음 장소에서 실행을 재개한다. 진입점과 출구점이 여러 개 특징을 가지고 있고, 입구점과 출구점이 하나는 서브루틴이라고 한다. 코루틴은 비동기 실행을 간단한 코드로 처리할 수 있고, 메인 스레드가 블로킹되는 그러한 상태를 관리할 수 있게 도움을 준다. 또한, 코루틴은 비동기 프로그래밍을 하기 위해 콜백로 처리하는 걸, 순차적으로 짤 수 있게 해주는 장점이 있다. 비동기 처리를 순차적으로 처리할 수 있게라는 말이 간단하는 말이다. 구글 I/O 발표 내용 서버를 한 번 호출하고, 서버에서 온 데이터(user)를 텍스트에 넣어주는 코드를 드림코드라고 불린다. .. 2023. 1. 18.
[안드로이드] - 비동기 프로그래밍 기술 (etc. coroutine) 코루틴에 대해서 블로그 작성을 하려고 다양하게 검색하면서 다른 블로거가 작성한 글들을 읽는 와중에 코루틴은 코틀린만에 전유물이 아니라는 걸 알게 됐다. 그래서 비동기 프로그래밍 기술 중 하나인 코루틴이라 생각을 달리하고, 비동기 프로그래밍 기술에 대해서 찾아보았다. 오랫동안 개발자로서 해결해야 할 문제가 있다. 사용자가 기다리거나 애플리케이션 확장을 방해하는 병목 현상을 일으키는 상황을 피하고 싶어 한다는 것이다. 이 문제를 해결하기 위해서 다음과 같은 접근 방식이 존재한다. - Threading - Callback - Futures, promies, 그리고 그 밖에 다른 것들 - Rx (Reactive Extensions) - Coroutines 아래에는 내가 써보았던 기술을 세 가지만 정리할 예정이다.. 2023. 1. 18.
[안드로이드] - 이미지 로더 Coil 라이브러리 (etc. Glide, Picasso) 우리는 안드로이드 개발을 하다보면 이미지 로딩을 하기 위한 라이브러리를 종종 사용한 적이 있을 것이다. 만약 라이브러리 없이 이미지를 로드하려고 했다면, 고려해야하는 요소가 많아진다. 따라서 이 부분을 thrid party 라이브러리를 사용했던 것이다. 쓴이는 Glide 를 가장 많이 사용한 라이브러리라 사용했었고, 이번 프로젝트에서 코루틴을 적용하면서 Coil 라이브러리를 사용하게 됐다. Coil 이 쉽게 적용할 수 있어서 차이가 궁금해졌다. 그래서 이번에 여러 Image loader 라이브러리 종류가 무엇이 있고? 각 라이브러리 차이를 조금이라도 알고자 여러 블로그에서 찾아본 내용을 정리를 해보겠다. Image loader 라이브러리 종류 Glide Picasso Coil AUIL (Android-U.. 2023. 1. 13.