【问题标题】:Is Work Manager correct way to delete uploaded files in Android?Work Manager 是在 Android 中删除上传文件的正确方法吗?
【发布时间】: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


    【解决方案1】:

    Work Manager 是在 Android 中删除上传文件的正确方法吗?

    是的。 WorkManager API 允许您安排需要保证完成的后台任务,无论应用程序进程是否存在。 WorkManager 仅在运行 API 14 及更高版本的设备上可用。

    但是,JobScheduler 在运行 API 21 及更高版本的设备上可用。因此,对于运行 API 14 及更高版本的设备,包括没有 Google Play 服务的设备,WorkManager 提供的功能类似于 JobScheduler 提供的功能。

    【讨论】:

      【解决方案2】:

      不清楚,但您似乎在说此代码运行不正常。如果是这样,什么是 FirebaseManager.deleteAt?是同步的还是异步的?

      【讨论】:

      • 我添加了代码作为我正在做的事情的概述。我的代码正在运行,我只是想知道使用 WorkManager 删除上传的文件是否理想。我想知道人们在 2019 年是如何做到的,他们是否创建了在服务器上安排删除的功能,或者是否可以只从 WorkManager 创建 OneTimeRequestBuilder 并让它尽可能地执行它。关于您关于同步或异步的问题,我正在使用 Coruotines 的挂起,因此在不同的调度程序中运行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多