【发布时间】:2019-05-21 13:07:00
【问题描述】:
我正在创建一个应用程序,我在其中创建一个帖子并添加附件。 将图片上传到 Firebase 存储后,用户可以删除附件。
我正在使用 Work Manager 删除文件,因为它旨在用于可延迟和有保证的执行。所以我的意图是让用户点击一个按钮来删除而不是等待它完成。有些我仍然想知道它是否有任何问题。
我正在使用 OneTimeWorkRequestBuilder,我正在传递数据以构建存储参考
// Repository
val workArray = mutableListOf<OneTimeWorkRequest>()
val work = OneTimeWorkRequestBuilder<CancelUploadWorkManager>()
.setInputData(getInputData(index, userId = userId, fileName = fileName))
.setConstraints(Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build())
.build()
workArray.add(work)
WorkManager.getInstance()
.enqueue(workArray)
// CancelUploadWorkManager
class CancelUploadWorkManager(context: Context, params: WorkerParameters): CoroutineWorker(context, params) {
override suspend fun doWork(): Result {
val position: Int = inputData.getInt(Constants.KEY_POSITION, 0)
val userId = inputData.getString(Constants.KEY_DIRECTORY)
val fileName = inputData.getString(Constants.KEY_FILE_NAME)
return try {
FirebaseManager().deleteAt(position = position, fileName = fileName!!,userId = userId!!)
Timber.i("Work Manager executed")
Result.success()
} catch (ex: Exception) {
Timber.e(ex)
Result.retry()
}
}
}
预期:文件应在保证的情况下删除
【问题讨论】:
标签: android firebase kotlin android-workmanager