Я создаю приложение, в котором я создаю сообщение и добавляю к нему вложения.После загрузки изображения в Firebase Storage пользователь может удалить вложение.
Я использую Диспетчер работ для удаления файла, так как он предназначен для отложенного и гарантированного выполнения.Поэтому я хотел позволить пользователю нажать кнопку, чтобы удалить ее, и не ждать, пока она завершится.Некоторые, как мне все еще интересно, если есть какие-либо проблемы с ним.
Я использую 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()
}
}
}
Ожидается: файл долженудаляться с гарантией