I would like to use a Hilt ViewModel in my ListenerService in order to save some info that is coming...
n
I would like to use a Hilt ViewModel in my ListenerService in order to save some info that is coming from the mobile to the watch into a Room Database. I know how to use a Hilt ViewModel in a Composable, but is it possible to use one in a ListenerService, and if so, how would I need to instantiate it?
This is what I have right now:
Copy code
private val urlsViewModel =
    ViewModelProvider(ViewModelStoreOwner { ViewModelStore() })[UrlsVM::class.java]

class ListenerService : WearableListenerService() {
    override fun onDataChanged(dataEvents: DataEventBuffer) {
        super.onDataChanged(dataEvents)

        dataEvents.forEach { dataEvent ->
            val uri = dataEvent.dataItem.uri

            when (uri.path) {
                "/handheld_path" -> {
                    val dataMap = DataMapItem.fromDataItem(dataEvent.dataItem).dataMap
                    val url = dataMap.get<String>("Url")

                    if (url != null) {
                        urlsViewModel.addUrl(UrlClass(url))
                    }
                }
            }
        }
    }
}
I am getting this error:
Copy code
FATAL EXCEPTION: WearableListenerService
                                                                                                    Process: com.strangerweather.news, PID: 27724
                                                                                                    java.lang.ExceptionInInitializerError
                                                                                                    	at com.strangerweather.news.presentation.datalayer.ListenerServiceKt.access$getUrlsViewModel$p(ListenerService.kt:1)
                                                                                                    	at com.strangerweather.news.presentation.datalayer.ListenerService.onDataChanged(ListenerService.kt:32)
                                                                                                    	at com.google.android.gms.wearable.zzq.run(com.google.android.gms:play-services-wearable@@18.0.0:2)
                                                                                                    	at android.os.Handler.handleCallback(Handler.java:938)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                                    	at com.google.android.gms.internal.wearable.zzi.zza(com.google.android.gms:play-services-wearable@@18.0.0:1)
                                                                                                    	at com.google.android.gms.wearable.zzn.zza(com.google.android.gms:play-services-wearable@@18.0.0:2)
                                                                                                    	at com.google.android.gms.internal.wearable.zzi.dispatchMessage(com.google.android.gms:play-services-wearable@@18.0.0:1)
                                                                                                    	at android.os.Looper.loop(Looper.java:223)
                                                                                                    	at android.os.HandlerThread.run(HandlerThread.java:67)
                                                                                                    Caused by: java.lang.RuntimeException: Cannot create an instance of class com.strangerweather.news.presentation.data.database.urls.UrlsVM
                                                                                                    	at androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.kt:204)
                                                                                                    	at androidx.lifecycle.ViewModelProvider$Factory.create(ViewModelProvider.kt:83)
                                                                                                    	at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.kt:187)
                                                                                                    	at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.kt:153)
                                                                                                    	at com.strangerweather.news.presentation.datalayer.ListenerServiceKt.<clinit>(ListenerService.kt:17)
                                                                                                    	at com.strangerweather.news.presentation.datalayer.ListenerServiceKt.access$getUrlsViewModel$p(ListenerService.kt:1) 
                                                                                                    	at com.strangerweather.news.presentation.datalayer.ListenerService.onDataChanged(ListenerService.kt:32) 
                                                                                                    	at com.google.android.gms.wearable.zzq.run(com.google.android.gms:play-services-wearable@@18.0.0:2) 
                                                                                                    	at android.os.Handler.handleCallback(Handler.java:938) 
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                                                                    	at com.google.android.gms.internal.wearable.zzi.zza(com.google.android.gms:play-services-wearable@@18.0.0:1) 
                                                                                                    	at com.google.android.gms.wearable.zzn.zza(com.google.android.gms:play-services-wearable@@18.0.0:2) 
                                                                                                    	at com.google.android.gms.internal.wearable.zzi.dispatchMessage(com.google.android.gms:play-services-wearable@@18.0.0:1) 
                                                                                                    	at android.os.Looper.loop(Looper.java:223) 
                                                                                                    	at android.os.HandlerThread.run(HandlerThread.java:67) 
                                                                                                    Caused by: java.lang.InstantiationException: java.lang.Class<com.strangerweather.news.presentation.data.database.urls.UrlsVM> has no zero argument constructor
                                                                                                    	at java.lang.Class.newInstance(Native Method)
                                                                                                    	at androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.kt:202)
                                                                                                    	at androidx.lifecycle.ViewModelProvider$Factory.create(ViewModelProvider.kt:83) 
                                                                                                    	at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.kt:187) 
                                                                                                    	at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.kt:153) 
                                                                                                    	at com.strangerweather.news.presentation.datalayer.ListenerServiceKt.<clinit>(ListenerService.kt:17) 
                                                                                                    	at com.strangerweather.news.presentation.datalayer.ListenerServiceKt.access$getUrlsViewModel$p(ListenerService.kt:1) 
                                                                                                    	at com.strangerweather.news.presentation.datalayer.ListenerService.onDataChanged(ListenerService.kt:32) 
                                                                                                    	at com.google.android.gms.wearable.zzq.run(com.google.android.gms:play-services-wearable@@18.0.0:2) 
                                                                                                    	at android.os.Handler.handleCallback(Handler.java:938) 
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                                                                    	at com.google.android.gms.internal.wearable.zzi.zza(com.google.android.gms:play-services-wearable@@18.0.0:1) 
                                                                                                    	at com.google.android.gms.wearable.zzn.zza(com.google.android.gms:play-services-wearable@@18.0.0:2) 
                                                                                                    	at com.google.android.gms.internal.wearable.zzi.dispatchMessage(com.google.android.gms:play-services-wearable@@18.0.0:1) 
                                                                                                    	at android.os.Looper.loop(Looper.java:223) 
                                                                                                    	at android.os.HandlerThread.run(HandlerThread.java:67)
100 Views