代码之家  ›  专栏  ›  技术社区  ›  Kakashi

WorkManager始终处于排队状态(Android Nougat)

  •  0
  • Kakashi  · 技术社区  · 6 年前

    我试试这个剧本:

    var myConstraints = Constraints.Builder()
            .setRequiredNetworkType(NetworkType.CONNECTED)
            .build()
    
    val uploadInventorySyncWork = OneTimeWorkRequest.Builder(UploadInventorySyncWorker::class.java)
                .setConstraints(myConstraints)
                .addTag(UploadInventoryModel.ONE_TIME_TAG)
                .build()
    
        WorkManager.getInstance().enqueue(uploadInventorySyncWork)
         WorkManager.getInstance().getWorkInfosByTagLiveData(UploadInventoryModel.ONE_TIME_TAG)
                 .observeForever { workStatus ->
    
                     if (workStatus != null) {
                         attempt+1
                         for (works in workStatus) {
                             Log.d("dodol34 no", attempt.toString() + " | " + works.state.toString())
                             if (works.state == WorkInfo.State.SUCCEEDED) {
    
                             }
                         }
                     }
    
                 }
    

    它在android oreo中运行良好。但在android nougat中它总是处于排队状态。以下是logcat结果(android nougat):

    12-02 00:20:13.890 23118-23118/com.mockie.daikokuten D/dodol34 no: 1 | ENQUEUED
    1 | ENQUEUED
    1 | ENQUEUED
    1 | ENQUEUED
    1 | ENQUEUED
    1 | ENQUEUED
    1 | ENQUEUED
    1 | ENQUEUED
    

    一点错误都没有,有时候有用,有时候不行。

    0 回复  |  直到 6 年前