Android 安卓服务中的刀柄注入

Android 安卓服务中的刀柄注入,android,dependency-injection,dagger-2,dagger-hilt,Android,Dependency Injection,Dagger 2,Dagger Hilt,我想在服务中注入一个类。让我们看看下面的代码: class DeviceUtil @Inject constructor() { ... } @AndroidEntryPoint class LocationUpdateService : Service() { @Inject lateinit var deviceUtil: DeviceUtil ... } @injectlateinit var deviceUtil:deviceUtil在活动中工作正常

我想在
服务
中注入一个类。让我们看看下面的代码:

class DeviceUtil @Inject constructor() {
   ...
}

@AndroidEntryPoint
class LocationUpdateService : Service() {

    @Inject
    lateinit var deviceUtil: DeviceUtil

    ...
}
@injectlateinit var deviceUtil:deviceUtil
在活动中工作正常,但在
服务中不工作


给出错误:
kotlin.UninitializedPropertyAccessException:lateinit属性deviceUtil尚未为像我这样的傻瓜初始化。正如OP在评论中所说,关于如何在
服务中注入对象的完整示例如下:

导入android.app.Service
导入android.content.Intent
导入android.os.Binder
导入android.os.IBinder
导入android.util.Log
导入dagger.hilt.android.androIdentityPoint
导入javax.inject.inject
导入com.yourapp.services.UserService
@雄蕊识别点
类MyService:Service(){
@注入lateinit var userService:userService
重写fun onCreate(){
super.onCreate()
userService.getUserList()
.subscribe{userList->Log.d(“标记”,“用户:$userList”)}
}
覆盖乐趣onBind(意图:意图?):IBinder{
返回对象:Binder(){
// ...
}
}
}

因此,我错误地忘记了在onCreate方法中调用
super.onCreate()
,通过添加它解决了我的问题。在我的情况下,仅仅添加super.onCreate()仍然无法解决问题,现在它告诉我,如果没有@Provides注释方法,就无法提供注入的用例(我正在我的用例模块中绑定它),虽然它在我的viewmodel(通过构造函数注入)上运行良好,但我没有发现您的问题,您能分享您的实现的任何快照吗?但是,我认为您需要为您的特定用例类使用@Provides或构造函数注入。事实证明,我正在将用例模块的范围限定为activityRetainedComponent,同时将该用例注入到服务中(使用AndroIdentityPoint注释),对我来说,我刚刚将用例模块和存储库模块的范围更改为ApplicationComponent,这对我来说很好