본문 바로가기
728x90

전체 글86

[안드로이드] Hilt에서 @Binds와 @Provides의 차이 Hilt 라이브러리를 이용해 의존성을 주입하는 경우에 Module에서 abstract class에는 @Binds 어노테이션이, object에는 @Provides 키워드가 붙게 되는데 어떤 이유에서인지 알아보겠습니다. @Binds? @Provides? 결론부터 말하자면 @Binds와 @Provides의 가장 큰 차이는 어떤 인스턴스를 제공하느냐 입니다. @Binds 어노테이션은 인터페이스 인스턴스, @Provides 어노테이션은 클래스 인스턴스를 제공합니다. @Binds @Binds는 Hilt에게 인터페이스 인스턴스를 제공하기 때문에 주로 Interface로 정의된 레포지토리(Repository)를 인스턴스로 제공합니다. 좀 더 정확히 말하면 인터페이스는 생성자를 정의할 수 없기 때문에 Repository.. 2023. 7. 15.
[안드로이드] 벡터파일(.svg)을 ImageView에 로드하는 방법 feat. Coil 장장 6~7시간의 삽질 끝에 벡터 파일(.svg 확장자)을 ImageView에 로드하는데에 성공했다..... drawable에 저장된 벡터 이미지를 불러오는 것이 아니라 서버에서 내려주는 https://xxxxx.svg .svg 확장자로 된 url을 ImageView에 띄워줘야 했다. 평소에 이미지 로딩 라이브러리로 Glide를 주로 사용해 '당연히 Glide가 해주겠지'라는 생각에 Glide만 이것저것 고쳐보다 결국 Glide는 svg 파일 로딩을 지원하지 않는다는 것을 알았다. Glide는 svg 파일을 지원하지 않지만 GlideApp을 이용해 벡터 파일 로딩이 가능하다고 한다. 그치만 본인의 경우에서는 GlideApp, GlideAppModule 버전에 따라 크래쉬가 계속 발생했고, 본인과 비슷한 .. 2023. 7. 12.
[안드로이드] Lottie 애니메이션 사용하기 어플리케이션과 사용자와의 상호작용에서 앱을 더 생동감 넘치게(?) 표현하는 방법에서 Airbnb에서 제공하는 Lottie 라이브러리가 있습니다. 저는 최근 배달의 민족이나 은행앱 로딩에서 위와 같은 효과를 자주 본 것 같아요. Lottie는 JSON 기반의 애니메이션 파일을 실시간으로 렌더링하는 벡터 애니메이션입니다. 벡터 기반이라 용량이 작고, 오픈소스 라이브러리로 별도의 변환이 필요 없어 편리하게 사용할 수 있다는 장점이 있습니다. 아래의 사이트에서 매우 많은 Lottie 파일을 무료로 제공하니 다운받아 사용합니다. Featured animations from our community Featured collection of Free Lottie Animations created with Bodymo.. 2023. 6. 8.
[Kotlin] Flow에서 ColdStream과 HotStream의 차이 Cold Stream 하나의 소비자(Consumer)에게 데이터를 발행합니다. (UniCast) 소비자가 소비를 시작할 때 데이터를 생성합니다. 모든 데이터는 스트림 내부에서 생성됩니다. Hot Stream 여러개의 소비자에게 데이터를 발행합니다. (MultiCast) 소비자가 데이터에 접근하지 않더라도 계속 데이터를 발행합니다. 모든 데이터는 스트림 외부에서 생성됩니다. 라고 정리할 수 있을 것 같습니다. 예를 들자면, Cold Stream은 'CD 플레이어', Hot Stream은 '라디오 방송'에 비유할 수 있습니다. CD 플레이어는 소비자(사용자) 한 명이 사용하고, 소비자가 플레이어를 중단하면 CD는 멈추고 더 이상 재생되지 않습니다. 그리고 1시간 뒤, 하루 뒤에도 플레이어를 재생하는 시점에 .. 2023. 6. 3.
[23-1 세종대학교 캡스톤디자인] 시설 작물 병해 검출 및 분류 플랫폼 구축 : 11-12주차 지난 주차 [23-1 세종대학교 캡스톤디자인] 시설 작물 병해 검출 및 분류 플랫폼 구축 : 9-10주차 지난 주차 [23-1 세종대학교 캡스톤디자인] 시설 작물 병해 검출 및 분류 플랫폼 구축 : 5-7주차 지난 주차 [23-1 세종대학교 캡스톤디자인] 시설 작물 병해 검출 및 분류 플랫폼 구축 : 3-4주차 지난 develop-oj.tistory.com 플레이스토어 출시 요청했던 출시심사가 승인되어 플레이스토어에서 다운로드 가능합니다!! 그로잇 - 작물 병해 진단, 농업인 커뮤니티 - Google Play 앱 그로잇(Glow It!) - 작물의 병해충 감염 여부를 진단하고 다른 사용자들과 정보를 공유하세요. play.google.com 11 - 12주차 - 주요 기능 구체화 및 UI 개선 □ 인공지능.. 2023. 5. 28.
[안드로이드] Hilt 의존성 주입 - "error: [Dagger/MissingBinding] android.content.Context cannot be provided without an @Provides-annotated method." 에러 해결방법 Hilt를 사용하지 않았던 프로젝트에서 ViewModel과 Repository에 Hilt 의존성을 주입하던 중 오류가 발생했습니다. "error: [Dagger/MissingBinding] android.content.Context cannot be provided without an @Provides-annotated method." 오류 메시지의 의미대로 Context를 사용하는 곳에 어노테이션을 추가하지 않아서 발생하는 오류(?)라고 생각이 들어 얼른 구글링을 했습니다. DataStore에 접근하기 위해 Repository에 매개변수로 Context를 전달받고 있습니다. 이때, @ApplicationContext 키워드를 추가하지 않아 발생하던 오류였습니다!! 2023. 5. 14.
728x90
반응형