D.I(featHilt)DaggerをHiltに変換

1551 ワード

参照-https://developer.android.com/codelabs/android-dagger-to-hilt?hl=ko#0 詳細については、リファレンスページを参照してください。

デフォルトHiltの適用方法


  • アプリケーション継承アプリケーションクラスのクラスに@HiltAndroidApp名を追加します.
    これにより、構築時にコンポーネントが作成されます.

  • 既存のコンポーネントを削除し、@Android EntryPoint操作を依存するクラスに追加します.
    @Android EntryPointの追加は、既存のDaggerからcomponentを取得してinjectメソッドを呼び出すのと同じ効果があります.

  • コンテキストが必要な場所に@ApplicationContextと@Activity Contextを表示します.
    アンドロイドシステムは自動的に注入されます.
  • BroadcastReceiverへのHiltの適用


    参照-https://stackoverflow.com/questions/64743087/how-can-i-inject-a-class-that-needs-context-into-broadcast-receiver-with-hilt
    abstract class HiltBroadcastReceiver : BroadcastReceiver() {
        @CallSuper
        override fun onReceive(context: Context, intent: Intent?) {
        }
    }
    @AndroidEntryPoint
    class BootReceiver : HiltBroadcastReceiver() {
    
        // Injection -> Example from my application
        @Inject
        lateinit var internetDaysLeftAlarm: InternetDaysLeftAlarm
    
        override fun onReceive(context: Context, intent: Intent?) {
            super.onReceive(context, intent)
            // Do whatever you need
        }
    }
    BroadcastReceiverを継承するHiltBroadcastReceiverを実装します.
    実際に使用しているBroadcastReceiverがHiltBroadcastReceiverを継承すると、hiltは正常に動作します.