Demo sử dụng Koin thay thế cho Dagger trên Kotlin

1. Introduction

Koin – một component mà được tạo ra để thay thế hoặc là một sự lựa chọn tuyệt vời thay cho Dagger khi viết app trong Kotlin . Koin được dùng để Inject các thành phần đến các nơi trong ứng dụng.

https://insert-koin.io/

So sánh với Dagger

Ưu điểm : Cấu hình đơn giản hơn , ít có code generation ,v.v

Nhược điểm : Khi phát sinh lỗi thì lỗi không detail khiến chúng ta hơi khó debug hơn.

2. What you’ll build

Ở bài viết này chúng ta sẽ demo hoàn chỉnh cách sử dụng Koin để call api.

3. Config Koin và các thư viện liên quan và dựng demo

– Thêm thư viện vào build.gradle:

  • Koin
  • Retrofit
  • Lifecycle +viewmodel

–   Cấu trúc thư mục và các file liên quan:

Tạo model UserEntity.kt

Tạo model LoadingState.kt để xử lý cho loading và error.

Tạo class BaseViewModel.kt để dùng chung phần loading.

Tạo ApiInterface.kt  chứa các API cần sử dụng (retrofit)

Tạo UserRepository.kt để gọi api

Tạo UserViewModel.kt để lấy data từ UserRepository

– Phần quan trọng tạo file Module.kt : dùng Koin để tạo và các Module cho app.

– get() : gọi các thành phần cần thiết cho module của koin

Ex: UserViewModel(get()) Trong demo này UserViewModel cần sử dụng UserRepository và hàm get() của Koin sẽ làm điều đó.

– single: yêu cầu Koin tạo một singleton, và chỉ tạo 1 lần trong quá trình chạy ứng dụng.

2.  Khởi tạo và sử dụng Koin

Giống như Dagger ta tạo 1 file Application và khai báo ở androidmanifest.xml

Và giờ để sử dụng các thành phần viewmodel chỉ cần inject chúng vào activity hoặc fragment …

Tada xong rồi các bạn ạ, 1 demo đơn giản về cách sử dụng Koin, có vẻ dễ hơn nhiều so với Dagger luôn nha.

Note: Bạn có thể tự demo bằng cách tạo thêm api getRepository.

Tham khảo tại: https://medium.com/swlh/dependency-injection-with-koin-6b6364dc8dba

Demo github.

Nguyễn Linh

Nguyễn Linh

Chia sẻ để cùng tiến bộ...