Work Manager 是否是删除 Android 中上传文件的正确方法?
Is Work Manager correct way to delete uploaded files in Android?
我正在创建一个应用程序,我在其中创建 post 并向其添加附件。
图像上传到 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()
}
}
}
预计:保证删除文件
Is Work Manager correct way to delete uploaded files in Android?
是的。 WorkManager API 让您可以安排需要保证完成的后台任务,无论应用进程是否存在。 WorkManager 仅适用于 运行 API 14 及更高版本的设备。
但是,JobScheduler 在设备 运行 API 21 及更高版本上可用。因此,对于 运行 API 14 及更高版本的设备,包括没有 Google Play 服务的设备,WorkManager 提供的功能与 JobScheduler 提供的功能类似。
不清楚,但您似乎是在说这段代码 运行 不正确。如果是这样,FirebaseManager.deleteAt是什么?是同步还是异步?
我正在创建一个应用程序,我在其中创建 post 并向其添加附件。 图像上传到 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()
}
}
}
预计:保证删除文件
Is Work Manager correct way to delete uploaded files in Android?
是的。 WorkManager API 让您可以安排需要保证完成的后台任务,无论应用进程是否存在。 WorkManager 仅适用于 运行 API 14 及更高版本的设备。
但是,JobScheduler 在设备 运行 API 21 及更高版本上可用。因此,对于 运行 API 14 及更高版本的设备,包括没有 Google Play 服务的设备,WorkManager 提供的功能与 JobScheduler 提供的功能类似。
不清楚,但您似乎是在说这段代码 运行 不正确。如果是这样,FirebaseManager.deleteAt是什么?是同步还是异步?