gpt4 book ai didi

java - 连接良好时上传图片,Android(后台进程)

转载 作者:行者123 更新时间:2023-12-02 09:15:40 28 4
gpt4 key购买 nike

当连接良好时,如何在后台处理Android上的上传图像?我有模式,当连接良好时,它可以上传,当连接不好时,它将存储在本地,并在连接时很快自动重新上传很好。

最佳答案

您可以使用 constraint on the connection 来针对此用例使用 WorkManager .

您应该开始在数据存储中记录要发送到后端的数据,然后将要在连接可用时执行的 WorkRequest 排入队列。您的工作人员“只是”需要将数据发送到后端。

要将工作人员排入队列,您可以使用类似 ( here I'm enqueuing it as a unique work request, to avoid duplication ) 的内容:

val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()

val syncDataWorker = OneTimeWorkRequestBuilder<SyncDataWorker>()
.setConstraints(constraints)
.build()

val operation = WorkManager.getInstance(this)
.enqueueUniqueWork(
uniqueConferenceDataWorker,
ExistingWorkPolicy.KEEP,
syncDataWorker)

然后您的工作可以使用 coroutineWorker 来完成( a Worker class requires that all the content run synchronously ):

class RefreshMainDataWork(context: Context, params: WorkerParameters) :
CoroutineWorker(context, params) {

override suspend fun doWork(): Result {
return try {
// Retrieve data
// Sync Data asynchronously with a suspended function
Result.success()
} catch (error: TitleRefreshError) {
Result.failure()
}
}
}

类似的事情还可以处理传输过程中的重试和连接丢失。当连接恢复时,工作线程将被停止并重新安排。

如果不知道您需要同步哪些数据以及您正在使用哪些库,就很难进行更详细的说明。 coroutine's codelab 中有一个关于如何使用 coroutineWorkers 的示例。

您可以引用WorkManager's documentation要了解如何使用它,还有一个简单的 Codelab 展示了如何使用 WorkManager。该 Codelab 位于 Java并在 Kotlin .

2019 version of ADSSched (the event app for the Android Developer Summit) uses a similar setup to download updates on request, but it's more complex to follow as it uses Dagger to inject the reference to the use case to refresh the data. Here's the commit.

关于java - 连接良好时上传图片,Android(后台进程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59007304/

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