- Notifications
You must be signed in to change notification settings - Fork 0
Hilt β Scoping with @ActivityComponent annotation and @ActivityScoped provider
Devrath edited this page Oct 9, 2023 · 2 revisions
- Observe this is
Activity scoped
so when activity is destroyed and recreated the Instance is also destroyed and recreated. - Once created unless activity is destroyed, The address of instance remains same.
// When activity is loaded for the first time DownloaderService class is built // Click on the Button to call the injected reference in activity for the first time Reference address:-> 204776435 // Click on the Button to call the injected reference in activity for the second time Reference address:-> 204776435 // When you rotate the screen DownloaderService class is built // Click on the Button to call the injected reference in activity for the third time Reference address:-> 65550570
DownloaderService.kt
class DownloaderService @Inject constructor(){ init { PrintUtils.printLog("DownloaderService class is built") } fun downloadData(data : String) { PrintUtils.printLog("Reference address:-> $data") } }
HiltActivityScopingModule.kt
@InstallIn(ActivityComponent::class) @Module object HiltActivityScopingModule { @ActivityScoped @Provides fun providesDownloader() : DownloaderService { return DownloaderService() } }
MyActivity.kt
@AndroidEntryPoint class MyActivity : AppCompatActivity() { private lateinit var binding: ActivityHiltScopingBinding @Inject lateinit var downloaderService : DownloaderService override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityHiltScopingBinding.inflate(layoutInflater) setContentView(binding.root) setOnClickListeners(); } private fun setOnClickListeners() { binding.apply { actScopedWithActivityAnnotationId.setOnClickListener { val code = downloaderService.hashCode().toString() downloaderService.downloadData(code) } } } }