gpt4 book ai didi

android - 未调用 Workmanager Worker 类 doWork() 方法

转载 作者:行者123 更新时间:2023-11-29 00:53:11 24 4
gpt4 key购买 nike

doWork() worker 类的方法在 Android 中从未调用过

我想在连接互联网时将离线数据与服务器同步

// worker 经理类

class UploadWorker (context: Context, workerParameters: WorkerParameters, val authRepository: AuthRepository): Worker(context,workerParameters) {
override fun doWork(): Result {
Log.e("inDo", "work")
GlobalScope.launch {
val resource = authRepository.loginAsync("wmwdwnd@gmail.com", "sdnwnd").await()
when (resource) {
is Resource.Success -> {
Result.success()
Log.e("complete", "ass")
}
is Resource.Error -> {
Result.success()
Log.e("error", "asdd")
//when (resource.code) {}
}
else -> {
Result.success()
}
}
}
return Result.success()
}
}

//查看类

class WorkMnagerActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_work_mnager)
val button = findViewById<Button>(R.id.button2)
button.setOnClickListener {
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
val data = Data.Builder()
.putString("tittle", "")
.build()
val oneTimeWorkRequest = OneTimeWorkRequest.Builder(UploadWorker::class.java)
.setInputData(data)
.setConstraints(constraints)
.build()


WorkManager.getInstance().enqueue(oneTimeWorkRequest);
WorkManager.getInstance().getWorkInfoByIdLiveData(oneTimeWorkRequest.id)
.observe(this, Observer {
it?.let {
if (it.state == WorkInfo.State.ENQUEUED) {
// Show the work state in text view
Log.e("ddd","Download enqueued.")
} else if (it.state == WorkInfo.State.BLOCKED) {
Log.e("ddd","Download blocked")
} else {
Log.e("ddd","Download running.")
}
}
})
}
}
}

最佳答案

worker 类仅支持同步任务(WorkManager 负责在后台执行程序上启动 doWork()。来自 Threading in Worker:

Note that Worker.doWork() is a synchronous call - you are expected to do the entirety of your background work in a blocking fashion and finish it by the time the method exits.

如果您需要异步运行某些东西,我建议您使用 CoroutineWorkerListenableWorker

您可以在 Threading in WorkManager guide 上找到更多信息.

关于android - 未调用 Workmanager Worker 类 doWork() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57555813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com