我有一个对象列表要使用 api 发送到后端,有没有办法中断这个过程。 workManager.cancelAll或 bytag 或 by id 不起作用,因为状态为 RUNNING。 有什么建议么?

class UploadWorker(appContext: Context, workerParams: WorkerParameters)
    : Worker(appContext, workerParams) {

lateinit var DBHelper: DatabaseHelper
val CHANNEL_ID = "UploadOfflinePhoto"
lateinit var offlinePhotoList: MutableList<OfflinePhoto>

lateinit var error: Error
lateinit var resultInfo: Result_Info
lateinit var imageData: Image_Data


var photoCertificatedTail: MutableList<Int> = ArrayList()
var photoNotCertificatedTail: MutableList<Int> = ArrayList()
lateinit var offlinePhotoListToDeleteFlag: MutableList<OfflinePhoto>
var count: Int = 0

companion object {
    private const val WORK_NAME = "UploadOfflinePhoto"
    var workManager = WorkManager.getInstance()
    fun stop(){
        Log.e("WorkInfo", "CANCELL ALL")
        //workManager.cancelAllWork()
    }

}




override fun doWork(): Result {
    // Do the work here--in this case, upload the images.

    DBHelper = DatabaseHelper(applicationContext)
    offlinePhotoList = DBHelper.offlinePhoto

    Log.e("WORK-MANAGER", "${offlinePhotoList.size}")
    if(offlinePhotoList.size > 0){
        uploadOfflineTail(offlinePhotoList[count])
    }




    val output = Data.Builder()
            .putIntArray("photoCertificatedTail",photoCertificatedTail.toIntArray() )
            .putIntArray("photoNotCertificatedTail",photoNotCertificatedTail.toIntArray() )
            .build()


    return Result.success(output)

}

  ask by Skip translate from so

本文未有回复,本站智能推荐:

1回复

具有多进程的 WorkManager

有没有办法将工作管理器中的工作从多个进程排入队列? 现在,当我尝试从“非用户界面”进程执行此操作时收到此消息 I/WM-GreedyScheduler: Ignoring schedule request in non-main process 。 我使用的工作管理器版本是 2.4.0。 我知道
1回复

无法从单独的进程启动 WorkManager

我正在使用 WorkManager 库(版本:1.0.0-alpha12)。 在我的应用程序中,我使用 AndroidManifest 中的以下 xml 行创建一个新进程。 这就是我使用 WorkManager 的方式: 但是当我从新进程调用这个方法时,应用程序崩溃了。 这是抛出的异常,
1回复

WorkManager 2.5.0 多进程 - 工作未在指定进程中运行

我正在尝试使用androidx.work:work-multiprocess:2.5.0在使用 Configuration.setDefaultProcessName() 指定的进程中运行工作,但无论我从哪个进程排队工作,都会调用 doWork() 方法主要申请流程。 如文档中所述, Remote
3回复

从Workmanager更新UI

如何从Android WorkManager更新UI。 Android Workmanager可以接收Boolean,Integer,Long,Float,Double,String 文档说: “将所有输入键值对放入构建器中。有效类型为:布尔,整数,浮点,浮点,双精度,字符串
4回复

如何使用WorkManager安排通知?

我想在每次用户在数据库中添加特定时间的注释时安排通知。 虽然有多种方法可以使用AlarmManager,BroadcastReceiver等。如何使用WorkManager完成?
4回复

WorkManager 中唯一的 OneTimeWorkRequest

我们正在使用 OneTimeWorkRequest 在我们的项目中启动后台任务。 在应用程序启动时,我们正在启动 OneTimeWorkRequest(比如 req A) 根据用户的操作,我们启动相同的工作请求 A。 在某些情况下,如果在工作请求 A 正在进行时应用程序被终止,Andr
1回复

何时使用 JobIntentService 与 WorkManager?

谷歌最近弃用了 IntentService: https ://android.googlesource.com/platform/frameworks/base.git/+/6f8b09029932dfd24945202017639754b00acc2e IntentService 的文档现在
1回复

WorkManager 还是前台服务?

一旦用户进入活动,我需要向 Web 服务发送一个值,一旦他/她退出活动,我需要向服务器发送另一个值。 它需要在那个时刻发生。 Android 开发人员指南说我应该将前台服务用于需要立即执行的后台任务,而 WorkManager 用于延迟任务。 但是,在任务完成后,我不需要更新 UI 上的任何内容,