Can we do constructor injection in service class in android?

Viewed 43

here is my Service class

class MyFirebaseMessagingService @Inject constructor(private val repository : Repository) :
    FirebaseMessagingService() {....}

class Repository @Inject constructor(private val apiService: ApiService) {}

and ApiService is Interface

The problem is on the first launch of app. This app is crashing with below message

java.lang.RuntimeException: Unable to instantiate service com.projects.driverapp.MyFirebaseMessagingService: java.lang.InstantiationException: java.lang.Class<com.projects.driverapp.MyFirebaseMessagingService> has no zero argument constructor

But after this crash, on second launch of app , this project works fine without crash, what is the root cause ?

1 Answers

The docs say that services need to be annotated with @AndroidEntryPoint, and Services generally need a 0 parameter constructor, so they can be started with startService().

Try annotating both your ApiService and MyFirebaseMessagingService classes with @AndroidEntryPoint and for MyFirebaseMessagingService try field injection only. Hope this helps

Related