تزریق وابستگی با Hilt (یک)


تزریق وابستگی با Hilt
تزریق وابستگی با Hilt


اول دیپندنسی ها رو به این شکل وارد میکنیم:

buildscript {
    ...
    dependencies {
        ...
        classpath 'com.google.dagger:hilt-android-gradle-plugin:2.28-alpha'
    }
}



apply plugin: 'kotlin-kapt'
apply plugin: 'dagger.hilt.android.plugin'

dependencies {
    implementation &quotcom.google.dagger:hilt-android:2.28-alpha&quot
    kapt &quotcom.google.dagger:hilt-android-compiler:2.28-alpha&quot
}

فرض کنیم یه کلاس Car داریم که برای تولید شدن نیاز به کلاس Engine داره و ما میخوایم یه نمونه ازاین کلاس رو در MainActivity داشته باشیم و متدهای اون رو صدا بزنیم.

همه برنامه هایی که از Hilt استفاده می کنند باید دارای یک کلاس از نوع اپلیکیشن باشند که انوتیشن HiltAndroidApp رو داشته باشن.پس کلاس App رو ایجاد میکنیم که از Application ارث بری کرده و بالاسرش انوتیشن @HiltAndroidApp رو قرار میدیم.

@HiltAndroidApp
class App : Application()

بعد از ایجاد Hilt در کلاس اپلیکیشن شما ، Hilt می تواند وابستگی به سایر کلاسهای Android که دارای انوتیشن AndroidEntryPoint باشند رو فراهم کنه پس کلاس MainActivity ما اینشکلی میشه:

@AndroidEntryPoint
class MainActivity: AppCompatActivity() { ... }

در حال حاضر Hilt از کلاسهای زیر را پشتیبانی می کنه و انوتیشن AndroidEntryPoint رو میتونیم براشون به کار ببریم:

  • Application (by using @HiltAndroidApp)
  • Activity
  • Fragment
  • View
  • Service
  • BroadcastReceiver

خب کلاس Car ما اینشکلی میشه:

Car
Car

کلاس Engine هم اینشکلی میشه:

Engine
Engine

حالا توی کلاس MainActivity میتونیم یه فید از نوع Car بسازیم که lateinit باشه و متد start رو صدا بزنیم وظیفه تامین وابستگی به Car رو به هیلت بسپره MainActivity الان اینشکلی شده:

MainActivity
MainActivity

اگه برنامه رو run کنیم میبینیم که خروجی به این شکل میشه:

logcat
logcat