-
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)
}
}
}
}