Является ли Work Manager правильным способом удаления загруженных файлов в Android? - PullRequest
0 голосов
/ 21 мая 2019

Я создаю приложение, в котором я создаю сообщение и добавляю к нему вложения.После загрузки изображения в 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()
        }

    }
}


Ожидается: файл долженудаляться с гарантией

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Является ли Work Manager правильным способом удаления загруженных файлов в Android?

Да. API WorkManager позволяет планировать фоновые задачи, требующие гарантированного завершения, независимо от того, запущен ли процесс приложения. WorkManager доступен только на устройствах с API 14 и выше.

Однако JobScheduler доступен на устройствах с API 21 и выше. Таким образом, для устройств с API 14 и выше, включая устройства без сервисов Google Play, WorkManager предоставляет возможности, аналогичные тем, которые предоставляет JobScheduler.

0 голосов
/ 22 мая 2019

Непонятно, но кажется, что вы говорите, что этот код работает неправильно.Если это так, то что такое FirebaseManager.deleteAt?Это синхронно или асинхронно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...