분류 전체보기239 [안드로이드] - 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. [git] - fatal: Unable to create 'C:/file_path/.git/index.lock': File exists. git add 도중에 기억이 잘 나지 않지만, 평소와 다른 상황을 겪었고, git add 를 하려는데 위와 같은 에러가 발생했다. 위 에러 해결방법 $ rm -rf ./.git/index.lock 터미널에 위와 같이 코드를 작성하면, lock 걸린 게 풀려서 다시 git add 를 할 수 있을 것이다. 위 에러는 특정 Git 프로세스가 동작중일 때 다른 Git 프로세스가 실행되는 것을 막기 위해서 index.lock 이라는 파일이 생기는데 의도된 프로세스가 아니라면 지워주면 된다. 2023. 1. 12. [안드로이드] Json parser Converter 라이브러리 [Gson VS Moshi] 안드로이드 Retrofit 을 사용하여 remote API 통신할 때 Retrofit Builder 패턴에서 사용하는 addConverterFactory 메서드를 본 적이 있었을 것이다. 아래 메서드 매개변수로 우리는 JSON parser Converter 라이브러리를 적용한다. 적용하는 이유는 JSON 직렬화 / 역직렬화 하는 과정이 필요해서다. 직렬화와 역직렬화에 대해서는 다시 블로그를 작성해서 링크를 걸 예정이다. 여기서 간단하게 설명을 하자면, 문자열 객체 변화하는 과정이라 생각하면 된다. public Builder addConverterFactory(Converter.Factory factory) { converterFactories.add(Objects.requireNonNull(factory.. 2023. 1. 12. [안드로이드 에러] The Android Virtual Device is currently running in an emulator and cannot be deleted (/*.lock) 문제 발생 안드로이드 에뮬레이터 실행하다가, 강제로 종료 또는 부적절하게 종료하려고 시도할 경우, 안드로이드 실행도 안되고, 해당 에뮬레이터 delete 또는 stop 이 되지 않는다. 안드로이드 스튜디오 Error 난 부분을 읽어보면, 우리 에뮬레이터가 보관되어 있는 디렉터리 쪽에 있는 파일 중에서 .lock 으로 끝나는 모든 파일을 싹 지우면 된다고 나와서 지웠지만, 역시나 되지 않았다. 해결 방법 Mac OS 인 경우, command + space (Spotlight) 또는 우측 상단의 돋보기 클릭 Activity Monitor 또는 활성 상태 보기 입력 메모리 카테고리 클릭 adb Process 삭제 Window 인 경우, 작업 관리자를 열기 (Ctrl + Alt + Del) 메모리 카테고리 클릭.. 2022. 12. 8. 이전 1 ··· 6 7 8 9 10 11 12 ··· 30 다음