@@ -20,13 +20,11 @@ import android.app.Application
20
20
import android.content.ContentResolver
21
21
import android.content.Context
22
22
import android.net.Uri
23
+ import androidx.lifecycle.LiveData
23
24
import androidx.lifecycle.ViewModel
24
25
import androidx.lifecycle.ViewModelProvider
25
- import androidx.work.Data
26
- import androidx.work.OneTimeWorkRequest
26
+ import androidx.work.*
27
27
// import androidx.work.OneTimeWorkRequest
28
- import androidx.work.OneTimeWorkRequestBuilder
29
- import androidx.work.WorkManager
30
28
import com.example.background.workers.BlurWorker
31
29
import com.example.background.workers.CleanupWorker
32
30
import com.example.background.workers.SaveImageToFileWorker
@@ -37,8 +35,12 @@ class BlurViewModel(application: Application) : ViewModel() {
37
35
internal var imageUri: Uri ? = null
38
36
internal var outputUri: Uri ? = null
39
37
38
+ // new instance variable for the workInfo
39
+ internal val outputWorkInfos: LiveData <List <WorkInfo >>
40
+
40
41
init {
41
42
imageUri = getImageUri(application.applicationContext)
43
+ outputWorkInfos = workManager.getWorkInfosByTagLiveData(TAG_OUTPUT )
42
44
}
43
45
/* *
44
46
* Create the WorkRequest to apply the blur and save the resulting image
@@ -56,8 +58,16 @@ class BlurViewModel(application: Application) : ViewModel() {
56
58
57
59
// chain your work
58
60
// add work request to clean up temporary images
61
+ /* var continuation = workManager
62
+ .beginWith(OneTimeWorkRequest.from(CleanupWorker::class.java))*/
63
+ // ensure unique work
59
64
var continuation = workManager
60
- .beginWith(OneTimeWorkRequest .from(CleanupWorker ::class .java))
65
+ .beginUniqueWork(
66
+ IMAGE_MANIPULATION_WORK_NAME ,
67
+ ExistingWorkPolicy .REPLACE ,
68
+ OneTimeWorkRequest .from(CleanupWorker ::class .java)
69
+ )
70
+
61
71
// add work request to blur the image the number of times requested
62
72
for (i in 0 until blurLevel) {
63
73
val blurBuilder = OneTimeWorkRequestBuilder <BlurWorker >()
@@ -67,7 +77,9 @@ class BlurViewModel(application: Application) : ViewModel() {
67
77
continuation = continuation.then(blurBuilder.build())
68
78
}
69
79
// add work request to save the image to the filesystem
70
- val save = OneTimeWorkRequest .Builder (SaveImageToFileWorker ::class .java).build()
80
+ val save = OneTimeWorkRequest .Builder (SaveImageToFileWorker ::class .java)
81
+ .addTag(TAG_OUTPUT )
82
+ .build()
71
83
continuation = continuation.then(save)
72
84
73
85
// actually start the work
0 commit comments