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 ```kotlin
repositories { repositories {

View File

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

View File

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