我正在尝试WorkManager在 Android 中使用,因为到目前为止我已经使用AsyncTask. 我正在尝试更新Room database. 我创建了一个类Repository来在后台执行该过程,但我不知道这是否是正确的编码方式。我也有点困惑如何在 userViewModel 中调用该方法。
这是我的代码:
在存储库中:
inner class Test(ctx: Context, params: WorkerParameters) : Worker(ctx, params) {
override fun doWork(): Result {
fun updateUser(userId : Int , userName :String , userLastname: String){
userDao.updateUser(userId, userName, userLastname)
}
return Result.success()
}
}
Run Code Online (Sandbox Code Playgroud)
在视图模型中:
private val workManager: WorkManager = WorkManager.getInstance()
fun updateUser(userID: Int, userName: String, userLastname: String) {
workManager.enqueue(OneTimeWorkRequest.from(Repository.Test::class.java))
}
Run Code Online (Sandbox Code Playgroud)
也许这不是使用 WorkManager 的正确方法,所以如果有人能帮助我,我将不胜感激。
android kotlin android-room android-jetpack android-workmanager
我正在尝试在我的 android 应用程序中实现 Room。我正在尝试从 API 获取数据并将它们保存在本地数据库中。但是当我运行应用程序时发生了这个错误
e: [kapt] 发生异常:java.lang.IllegalArgumentException: intcannot be convert to an Element
这是我的数据库类:
@Database(entities = [
(User::class)],
version = 1, exportSchema = false)
abstract class UserDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
companion object {
@Volatile
private var INSTANCE: UserDatabase? = null
fun getDatabase(context: Context): UserDatabase {
if (INSTANCE == null){
synchronized(this){
INSTANCE = Room.databaseBuilder(
context.applicationContext,
UserDatabase::class.java,
"user_database")
.build()
}
}
return INSTANCE!!
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的存储库:
class Repository(application: Application) {
private var mUserDao: UserDao
init …Run Code Online (Sandbox Code Playgroud) 一段时间以来,我才刚刚开始学习如何在Kotlin中进行开发。我正在处理此事情,我正在尝试将列表解析为另一种类型的列表。基本上,它们是同一件事,但名称不同。但是,当我尝试使用从函数中作为参数给出的列表中获取的数据填充新列表时,该列表仅填充了第一个对象。
这是我的功能:
fun convertRoomClass(course: List<Course>) : List<Courses> {
lateinit var list : List<Courses>
course.forEach {
val id = it.pathID
val name = it.pathName
val desc = it.pathDescription
val crs : Courses = Courses(id, name!!, desc!!)
list = listOf(crs)
}
return list
}
Run Code Online (Sandbox Code Playgroud)