我想在 Service
中注入(inject)一个类.让我们看看下面的代码:
class DeviceUtil @Inject constructor() {
...
}
@AndroidEntryPoint
class LocationUpdateService : Service() {
@Inject
lateinit var deviceUtil: DeviceUtil
...
}
@Inject lateinit var deviceUtil: DeviceUtil
在 Activity 中工作正常,但在 Service
中不工作.它给出了错误:
kotlin.UninitializedPropertyAccessException: lateinit property deviceUtil has not been initialized
最佳答案
对于像我这样的傻瓜。正如 OP 在评论中所说,关于如何在 service
中注入(inject)对象的完整示例像这样:
import android.app.Service
import android.content.Intent
import android.os.Binder
import android.os.IBinder
import android.util.Log
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
import com.yourapp.services.UserService
@AndroidEntryPoint
class MyService: Service() {
@Inject lateinit var userService: UserService
override fun onCreate() {
super.onCreate()
userService.getUserList()
.subscribe { userList -> Log.d("tag", "users: $userList") }
}
override fun onBind(intent: Intent?): IBinder? {
return object: Binder() {
// ...
}
}
}
至于您要注入(inject)的服务,请确保它的构造函数中有 @Inject 注释,如下所示:class UserService @Inject() constructor() {
// ...
}
关于android - Android 服务中的 Hilt 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66036448/