Kế hoạch phát triển Dagger 2 của Google trong 2020

Tram Ho

Ở bài viết này sẽ nói về kế hoạch phát triển Dagger 2 của Google trong năm 2020.

Nội dung bài viết được lấy từ: Gitconnected

Trước đây, để tích hợp Dagger vào ứng dụng rất phức tạp. Để giảm thiểu cũng như khắc phục vấn đề này, tại Android Dev Summit 2019, Manuel VivoDaniel Santiago đã có 1 cuộc nói chuyện về DI và kế hoạch cho Dagger 2 trong thời gian tới. Chi tiết có thể xem ở video. Hoặc bạn có thể theo dõi bài viết này. Lưu ý đây chỉ là kế hoạch sắp tới thôi nhé.

Google đã nói rõ:

Use Dagger 2 for your Medium / Large Android Project

I. Dagger 2 sẽ hoạt động tốt hơn với Kotlin

1. Hỗ trợ @Module annotation Object class

  • Hiện tại chúng ta cần có JvmStatic:

  • Kế hoạch là sẽ loại bỏ JvmStatic:

2. Nhận biết @Qualifier annotation

  • Hiện tại chúng ta cần có 1 trường field cho Qualifier name:

  • Kế hoạch là loại bỏ field:

3. Nhận biết Kotlin Wildcards

  • Hiện tại cần có @JvmSupressWildcards khi sử dụng Kotlin wildcard:

  • Kế hoạch là loại bỏ nó:

II. Đơn giản sử dụng Dagger 2

1. Jnjection

  • Hiện tại, cách duy nhất đển inject Dagger 2 vào Activity là get component và self injection 1 cách tường minh như bên dưới:

hoặc chúng ta cần kế thừa Dagger 2 Activity class:

  • Với kế hoạch tiếp theo của Google là sử dụng @EntryPoint để đơn giản hóa việc inject:

Ngoài ra, còn support cho việc inject ViewModel

2. Predefined Components

Để sử dụng Dagger 2 chúng ta cần define 1 AppComponent và là kiểu Singleton:

  • Google sẽ thay thế việc define AppComponent bằng việc sử dụng @InstallIn annotation ở bên ngoài với SingletonComponent:

Không chỉ cung cấp SingletonComponent mà còn có ActivityComponent, FragmentComponent, ServiceComponent

Việc này giúp chúng ta tránh được việc tạo nhiều boilerplate code.

Việc thay đổi này của Dagger 2 không ảnh hưởng đến cách sử dụng trước đó, nên chúng ta không cần phải quan tâm rằng nó có ảnh hưởng tới những phát triển trước đó.

III. Dagger 2 Testing với EntryPoint

Cùng với @EntryPointTestEntryPointRule sẽ cung cấp component cho mỗi test. Ngoài ra có thể tùy chỉnh test cases với @TestModule để custom dependencies

IV Tương thích tốt với Jetpack Library

Dagger 2 sẽ được xuất hiện trong Jetpack Library như ViewModel, WorkManager,..
Ở trên, Google đã recommends là sử dụng Dagger 2 cho những project trung bình và lớn..

Cuối cùng, hi vọng là Google sẽ sớm thực hiện plan này.

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo