【发布时间】:2020-11-14 04:15:50
【问题描述】:
为了在 JobScheduler 中将某些参数保存到本地,我在 JobService 下面实现了,
class MyJobService : JobService() {
private var context = applicationContext
private var db = Room.databaseBuilder(
context, // ERROR
AppDatabase::class.java, "database-name"
).build()
override fun onStopJob(params: JobParameters?): Boolean {
...
}
override fun onStartJob(params: JobParameters?): Boolean {
// use db
...
}
但applicationContext 无法使用以下错误消息,
Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
所以我正在尝试另一种方式,将房间实例传递给 JobInfo 中的 MyJobService,
val job = JobInfo.Builder(
MY_BACKGROUND_JOB,
ComponentName(context, MyJobService::class.java) // seems to can not passing any arguments for constructor
)
.build()
但在Class<?>,似乎无法传递参数。
onStartJob中的房间实例如何使用?
【问题讨论】:
-
这不是一个优雅的解决方案!您不应该到处传递上下文,而是到处创建 Room 实例。
标签: android android-room android-jobscheduler