Skip to content

Commit 084a541

Browse files
committed
add tag
1 parent 6de0b70 commit 084a541

File tree

2 files changed

+37
-6
lines changed

2 files changed

+37
-6
lines changed

11-blur-o-matic/app/src/main/java/com/example/background/BlurActivity.kt

+19
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import android.os.Bundle
2020
import android.view.View
2121
import androidx.activity.viewModels
2222
import androidx.appcompat.app.AppCompatActivity
23+
import androidx.lifecycle.Observer
24+
import androidx.work.WorkInfo
2325
import com.example.background.databinding.ActivityBlurBinding
2426

2527
class BlurActivity : AppCompatActivity() {
@@ -37,6 +39,8 @@ class BlurActivity : AppCompatActivity() {
3739
setContentView(binding.root)
3840

3941
binding.goButton.setOnClickListener { viewModel.applyBlur(blurLevel) }
42+
// observe work status
43+
viewModel.outputWorkInfos.observe(this, workInfosObserver())
4044
}
4145

4246
/**
@@ -70,4 +74,19 @@ class BlurActivity : AppCompatActivity() {
7074
R.id.radio_blur_lv_3 -> 3
7175
else -> 1
7276
}
77+
78+
// define the observer function
79+
private fun workInfosObserver(): Observer<List<WorkInfo>> {
80+
return Observer { listOfWorkInfo ->
81+
if (listOfWorkInfo.isNullOrEmpty()) {
82+
return@Observer
83+
}
84+
val workInfo = listOfWorkInfo[0]
85+
if (workInfo.state.isFinished) {
86+
showWorkFinished()
87+
} else {
88+
showWorkInProgress()
89+
}
90+
}
91+
}
7392
}

11-blur-o-matic/app/src/main/java/com/example/background/BlurViewModel.kt

+18-6
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,11 @@ import android.app.Application
2020
import android.content.ContentResolver
2121
import android.content.Context
2222
import android.net.Uri
23+
import androidx.lifecycle.LiveData
2324
import androidx.lifecycle.ViewModel
2425
import androidx.lifecycle.ViewModelProvider
25-
import androidx.work.Data
26-
import androidx.work.OneTimeWorkRequest
26+
import androidx.work.*
2727
//import androidx.work.OneTimeWorkRequest
28-
import androidx.work.OneTimeWorkRequestBuilder
29-
import androidx.work.WorkManager
3028
import com.example.background.workers.BlurWorker
3129
import com.example.background.workers.CleanupWorker
3230
import com.example.background.workers.SaveImageToFileWorker
@@ -37,8 +35,12 @@ class BlurViewModel(application: Application) : ViewModel() {
3735
internal var imageUri: Uri? = null
3836
internal var outputUri: Uri? = null
3937

38+
// new instance variable for the workInfo
39+
internal val outputWorkInfos: LiveData<List<WorkInfo>>
40+
4041
init {
4142
imageUri = getImageUri(application.applicationContext)
43+
outputWorkInfos = workManager.getWorkInfosByTagLiveData(TAG_OUTPUT)
4244
}
4345
/**
4446
* Create the WorkRequest to apply the blur and save the resulting image
@@ -56,8 +58,16 @@ class BlurViewModel(application: Application) : ViewModel() {
5658

5759
// chain your work
5860
// add work request to clean up temporary images
61+
/*var continuation = workManager
62+
.beginWith(OneTimeWorkRequest.from(CleanupWorker::class.java))*/
63+
// ensure unique work
5964
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+
6171
// add work request to blur the image the number of times requested
6272
for (i in 0 until blurLevel) {
6373
val blurBuilder = OneTimeWorkRequestBuilder<BlurWorker>()
@@ -67,7 +77,9 @@ class BlurViewModel(application: Application) : ViewModel() {
6777
continuation = continuation.then(blurBuilder.build())
6878
}
6979
// 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()
7183
continuation = continuation.then(save)
7284

7385
// actually start the work

0 commit comments

Comments
 (0)