Android 썸네일형 리스트형 [Android] Coroutine에서는 왜 Thread보다 교착상태가 덜 발생할까? 안드로이드 개발을 하며 비동기 처리를 할 때는 주로 Thread보다 Coroutine을 많이 사용하는데요,왜 Coroutine에서는 Thread보다 교착 상태가 덜 발생할까요? 🔎 교착 상태란 (Deadlock) 교착 상태와 관련해서 이런 비슷한 이미지를 한 번쯤은 보셨을 것 같은데요,위 이미지처럼 교착상태는 여러 스레드 또는 작업이 서로의 자원을 기다리며 무한 대기하는 상황을 뜻합니다 이를 잘 이해하기 위해서 먼저 스레드와 코루틴이 공유 자원을 어떻게 다루는지 살펴보도록 하겠습니다 👀 스레드(Thread)에서 공유 자원 보호멀티 스레드 환경에서는 여러 스레드가 동시에 같은 자원 (ex. 변수, 파일, 네트워크 연결 등)에 접근할 수 있습니다이런 경우 데이터가 꼬이거나 충돌하는 것을 방지하기.. 더보기 [Android] UI는 왜 Main Thread에서만 그려져야 할까? 평소에 안드로이드 개발을 하면서 자연스럽게 오래 걸리는 작업은 백그라운드에서 실행하고 UI는 메인 스레드에서 그려야지 ! 라고 생각했는데 문득 왜...? 라는 생각이 들면서 한번에 대답이 나오질 않았다 그래서 이 참에 한번 정리를 해보려고 한다 안드로이드에는 Main Thread와 Worker Thread가 존재합니다 Main Thread는 어플리케이션을 실행 시 자동으로 생성되는 스레드이고,Worker Thread는 Main Thread와 별도로 동작하는 백그라운드 스레드입니다. 주로 작업을 병렬로 처리하거나 백그라운드 작업(ex. 네트워크 요청, 이미지 처리 등)을 실행하기 위해 사용합니다 우선 Main Thread에 대해 먼저 알아보도록 하겠습니다 ✏️ Main Thread일반적으로 메인 스레드.. 더보기 [Android] UseCase 꼭 필요할까? Clean Architecture를 기반으로 '다온길' 프로젝트를 진행하던 도중 UseCase에서는 단순히 Repository를 호출만 하는 코드가 늘어나고 있는 것을 발견할 수 있었다. 프로젝트가 커질수록 불필요한 코드들을 관리하기가 조금은 수고스러웠다. 그러던 도중 팀원들과 회의를 하다 이런 이야기가 나왔다. "UseCase 꼭 필요할까..? 🤔" 😮 UseCase란? Clean Architecture의 Domain Layer에서 UseCase의 모습을 볼 수 있습니다UseCase는 서비스를 사용하고 있는 사용자가 해당 서비스를 통해 하고자 하는 것을 의미합니다 예를 들어 쇼핑몰 서비스가 있을 때,- 상품 검색하기- 상품 구매하기- 상품 리뷰 남기기 등 서비스에서 사용자가 사용하고자 하는 최소 .. 더보기 [Android] 객체지향 프로그래밍이란? (객체지향 프로그래밍 != SOLID 원칙) 전공 수업을 들으며 객체지향 프로그래밍, SOLID 원칙 이라는 단어들이 참 많이 나왔었는데 직접 프로젝트를 진행하다보니 객체지향 프로그래밍의 중요성을 몸소 깨닫게 되었습니다 그런데 가끔 저도 모르게 객체지향 프로그래밍 == SOLID 원칙이라고 생각을 할 때가 있더라구요... 물론 둘다 객체지향 프로그래밍과 관련된 개념은 맞지만 서로 다른 정의를 가지고 있으니 이 참에 다시 정리를 해보려고 합니다 오늘은 우선 객체지향 프로그래밍에 대해서 정리해보겠습니다 !객체지향 프로그래밍 (Object Oriented Programming)은 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고, 그 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법 입니다 그리고 SOLID 원칙은 .. 더보기 [Android] 프로젝트에 Hilt로 의존성 주입하기 (다온길 마이그레이션) 다온길 프로젝트를 진행하며 처음엔 클린 아키텍처의 구조를 이해하는 단계라 Data Layer, Domain Layer, Presentation Layer를 모듈로 분리가 아닌 패키지로만 분리를 해서 코드를 구현했었습니다클린 아키텍처를 클린 아키텍처라고 부를 수 없는 ,,, 그리고 Hilt와 클린 아키텍처에 대해 조금 더 공부를 하고 Hilt를 도입해서 다온길 ver2로 제대로 Hilt를 사용한 클린 아키텍처로 마이그레이션을 진행하였습니다 이 과정에서 직접 수동으로 의존성 주입을 해주었을 때와 Hilt를 통해 의존성 주입을 해준 과정을 한번 정리해보려고 합니다 ! 전체 코드를 가져오기엔 너무 많아서 마이그레이션을 하면서 제가 편하다고 느꼈던 부분들을 위주로 가져와보았습니다 👩🏻💻 기존 코드Re.. 더보기 [Android] Dagger와 Hilt로 자동 의존성 주입 이해하기 이전 포스팅에서 의존성 주입의 의미와 왜 필요한지, 그리고 수동 의존성 주입에 대해서 알아보았는데요그때 이야기 했던 수동 의존성 주입의 단점들을 보완하여 편하게 의존성을 주입하기 위해 DI 라이브러리인 Dagger와 Hilt에 대해 알아보려고 합니다 ☄️ DI 라이브러리의존성을 자동으로 주입해주는 라이브러리는 대표적으로 Dagger, Koin, Hilt가 있는데요그 중에서도 Dagger와 Hilt가 많이 사용되고, 특히 안드로이드에서는 Hilt를 가장 많이 사용하고 있습니다 그래서 저도 프로젝트를 진행하며 Hilt를 사용했었고, 처음엔 Hilt만 사용할거니까 Hilt만 알면 되지 않아? 라고 생각했는데 Hilt가 Dagger를 기반으로 만들어진 라이브러리라 Hilt를 잘 사용하기 위해서는 Dagger.. 더보기 [Android] 의존성 주입이란? (feat. 수동 의존성 주입) 클린 아키텍처를 공부하면서 의존성 주입, 의존성 역전 원칙 등등 의존성에 관련된 말이 많이 나왔는데요의존성 주입이란 무엇인지 처음부터 차근차근 정리해보려고 합니다 🪄 의존성 주입(Dependency Injection)이란?객체는 다른 객체와 상호작용을 하며 필요한 객체에 의존을 하게 됩니다 예를 들어 Car 클래스가 Engine 클래스를 참조하고 있습니다이때, Car 클래스는 Engine 클래스에 의존하고 있다고 말할 수 있는데요그리고 이렇게 클래스를 필요로 하는 것을 의존성(Dependency)이라고 합니다 그런데 이러한 의존성이 많아지면 코드 간 결합도가 높아져 유지보수성이 떨어지고 객체를 재사용하기 어려워집니다그렇기 때문에 객체 간의 결합도를 낮추기 위해 객체를 생성하는 시점에 필요한 의존성 .. 더보기 구글 플레이스토어 첫 앱 출시기 <안뜰> IT 동아리에서 1월부터 시작해 팀원들과 꾸준히 진행한 '안뜰'이 드디어 9월 초에 구글 플레이 스토어에 배포되었다 ! 안뜰 플레이 스토어 링크 🌱https://play.google.com/store/apps/details?id=com.umc.anddeul&hl=ko 첫 앱 출시기 시작합니다 💨 🌱 안뜰 '안뜰'은 가족 간 소통을 위한 소규모 SNS 어플리케이션입니다 주요 기능은 이렇게 4가지가 있습니다1. 우리 가족만을 위한 작은 SNS 💌게시글에 사진이나 음성을 올려 서로의 일상을 공유해보세요!이모지로 게시물에 반응을 남겨보세요.2. ‘따듯한 잔소리’ 기능 내 가족에게 애정 어린 잔소리가 필요할 때!가족의 페이지에 직접 체크리스트 만들어주세요 : 상대방의 페이지에 방문해 직접 체크리스트.. 더보기 이전 1 2 다음