fix: 处理部分设备启动上传任务异常

This commit is contained in:
yangxisong 2025-12-16 14:39:41 +08:00
parent 0086d15094
commit e3f245d9f4
3 changed files with 11 additions and 6 deletions

View File

@ -10,7 +10,7 @@ Room 数据持久化Worker管理上传任务初次上传+重试共5次
### 使用
#### 1.0.13
#### 1.0.14
```kotlin
repositories {

View File

@ -7,7 +7,7 @@ plugins {
id("maven-publish")
}
group = "com.yuanxuan"
version = "1.0.13"
version = "1.0.14"
val baseReleaseUrl: Provider<String> = providers.gradleProperty("baseReleaseUrl")

View File

@ -5,9 +5,9 @@ import androidx.work.BackoffPolicy
import androidx.work.Constraints
import androidx.work.CoroutineWorker
import androidx.work.ExistingWorkPolicy
import androidx.work.ForegroundInfo
import androidx.work.NetworkType
import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.OutOfQuotaPolicy
import androidx.work.WorkManager
import androidx.work.WorkerParameters
import com.squareup.moshi.Moshi
@ -31,7 +31,7 @@ internal class UploadWorker(appContext: Context, params: WorkerParameters) :
data = trackingPointDao.getPendingEntities().map { it.copy(uploading = true) }
}
try {
if (data.isEmpty()) return Result.success()
if (data.isEmpty()) return success(emptyList())
trackingPointDao.update(data)
val moshi = Moshi.Builder().build()
val adapter = moshi.adapter(TrackingPoint::class.java)
@ -73,8 +73,14 @@ internal class UploadWorker(appContext: Context, params: WorkerParameters) :
}
}
override suspend fun getForegroundInfo(): ForegroundInfo {
return super.getForegroundInfo()
}
private suspend fun success(ids: List<Long>): Result {
trackingPointDao.delete(ids)
if (ids.isNotEmpty()) {
trackingPointDao.delete(ids)
}
return Result.success()
}
@ -95,7 +101,6 @@ internal class UploadWorker(appContext: Context, params: WorkerParameters) :
val request = OneTimeWorkRequestBuilder<UploadWorker>()
.setConstraints(constraints)
.setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST)
//重试策略 一共5次 线性增加间隔时长
.setBackoffCriteria(
backoffPolicy = BackoffPolicy.LINEAR,