diff --git a/WorkManagerSample/app/build.gradle b/WorkManagerSample/app/build.gradle
index 1152d220..c1ad6ab4 100644
--- a/WorkManagerSample/app/build.gradle
+++ b/WorkManagerSample/app/build.gradle
@@ -26,7 +26,7 @@ android {
useSupportLibrary true
}
// Switching to Renderscript support provided by framework.
- minSdkVersion 18
+ minSdkVersion build_versions.min_sdk
targetSdkVersion build_versions.target_sdk
versionCode 1
versionName "1.0"
diff --git a/WorkManagerSample/app/src/main/AndroidManifest.xml b/WorkManagerSample/app/src/main/AndroidManifest.xml
index f7a9e7d2..d00c8a31 100644
--- a/WorkManagerSample/app/src/main/AndroidManifest.xml
+++ b/WorkManagerSample/app/src/main/AndroidManifest.xml
@@ -33,13 +33,18 @@
android:theme="@style/AppTheme">
+ tools:targetApi="n"
+ tools:node="merge">
+
+
diff --git a/WorkManagerSample/app/src/main/java/com/example/background/FilterActivity.kt b/WorkManagerSample/app/src/main/java/com/example/background/FilterActivity.kt
index 95b2a207..4e9b8131 100644
--- a/WorkManagerSample/app/src/main/java/com/example/background/FilterActivity.kt
+++ b/WorkManagerSample/app/src/main/java/com/example/background/FilterActivity.kt
@@ -40,7 +40,7 @@ class FilterActivity : AppCompatActivity() {
setContentView(root)
bindViews(this)
// Check to see if we have output.
- viewModel.workInfo.observe(this@FilterActivity) { info ->
+ viewModel.workInfo?.observe(this@FilterActivity) { info ->
onStateChange(info, this)
}
}
diff --git a/WorkManagerSample/app/src/main/java/com/example/background/FilterViewModel.kt b/WorkManagerSample/app/src/main/java/com/example/background/FilterViewModel.kt
index 19d8de5d..a8dafd51 100644
--- a/WorkManagerSample/app/src/main/java/com/example/background/FilterViewModel.kt
+++ b/WorkManagerSample/app/src/main/java/com/example/background/FilterViewModel.kt
@@ -32,7 +32,11 @@ class FilterViewModel(application: Application) : ViewModel() {
private val workManager = WorkManager.getInstance(application)
internal val workInfo =
- workManager.getWorkInfosByTagLiveData(Constants.TAG_OUTPUT).map { it[0] }
+ workManager.getWorkInfosByTagLiveData(Constants.TAG_OUTPUT).takeIf {
+ it.value != null
+ }?.map {
+ it[0]
+ }
internal fun apply(imageOperations: ImageOperations) {
imageOperations.continuation.enqueue()
diff --git a/WorkManagerSample/lib/build.gradle b/WorkManagerSample/lib/build.gradle
index e7016717..7feec749 100644
--- a/WorkManagerSample/lib/build.gradle
+++ b/WorkManagerSample/lib/build.gradle
@@ -26,7 +26,7 @@ android {
useSupportLibrary true
}
// Switching to Renderscript support provided by framework.
- minSdkVersion 18
+ minSdkVersion build_versions.min_sdk
targetSdkVersion build_versions.target_sdk
versionCode 1
versionName "1.0"
diff --git a/WorkManagerSample/lib/src/main/java/com/example/background/ImageOperations.kt b/WorkManagerSample/lib/src/main/java/com/example/background/ImageOperations.kt
index 4e3fc48b..c0143d65 100644
--- a/WorkManagerSample/lib/src/main/java/com/example/background/ImageOperations.kt
+++ b/WorkManagerSample/lib/src/main/java/com/example/background/ImageOperations.kt
@@ -19,14 +19,7 @@ package com.example.background
import android.annotation.SuppressLint
import android.content.Context
import android.net.Uri
-import androidx.work.Data
-import androidx.work.ExistingWorkPolicy
-import androidx.work.ListenableWorker
-import androidx.work.OneTimeWorkRequest
-import androidx.work.OneTimeWorkRequestBuilder
-import androidx.work.WorkContinuation
-import androidx.work.WorkManager
-import androidx.work.workDataOf
+import androidx.work.*
import com.example.background.workers.CleanupWorker
import com.example.background.workers.SaveImageToGalleryWorker
import com.example.background.workers.UploadWorker
@@ -90,6 +83,7 @@ class ImageOperations(
) =
OneTimeWorkRequestBuilder().apply {
setInputData(inputData)
+ setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST)
if (!tag.isNullOrEmpty()) {
addTag(tag)
}
diff --git a/WorkManagerSample/lib/src/main/java/com/example/background/workers/filters/BaseFilterWorker.kt b/WorkManagerSample/lib/src/main/java/com/example/background/workers/filters/BaseFilterWorker.kt
index 2d538317..4ad0ff86 100644
--- a/WorkManagerSample/lib/src/main/java/com/example/background/workers/filters/BaseFilterWorker.kt
+++ b/WorkManagerSample/lib/src/main/java/com/example/background/workers/filters/BaseFilterWorker.kt
@@ -31,11 +31,7 @@ import android.util.Log
import androidx.annotation.StringRes
import androidx.annotation.VisibleForTesting
import androidx.core.app.NotificationCompat.Builder
-import androidx.work.CoroutineWorker
-import androidx.work.ForegroundInfo
-import androidx.work.WorkManager
-import androidx.work.WorkerParameters
-import androidx.work.workDataOf
+import androidx.work.*
import com.example.background.Constants
import com.example.background.library.R
import java.io.File
@@ -55,7 +51,6 @@ abstract class BaseFilterWorker(context: Context, parameters: WorkerParameters)
val resourceUri = inputData.getString(Constants.KEY_IMAGE_URI) ?:
throw IllegalArgumentException("Invalid input uri")
return try {
- setForeground(createForegroundInfo())
val inputStream = inputStreamFor(applicationContext, resourceUri)
val bitmap = BitmapFactory.decodeStream(inputStream)
val output = applyFilter(bitmap)
@@ -109,7 +104,7 @@ abstract class BaseFilterWorker(context: Context, parameters: WorkerParameters)
/**
* Create ForegroundInfo required to run a Worker in a foreground service.
*/
- private fun createForegroundInfo(): ForegroundInfo {
+ override suspend fun getForegroundInfo(): ForegroundInfo {
// For a real world app you might want to use a different id for each Notification.
val notificationId = 1
return ForegroundInfo(notificationId, createNotification())
diff --git a/WorkManagerSample/versions.gradle b/WorkManagerSample/versions.gradle
index ecb4df3d..0d346174 100644
--- a/WorkManagerSample/versions.gradle
+++ b/WorkManagerSample/versions.gradle
@@ -62,12 +62,12 @@ versions.rxjava2 = "2.1.3"
versions.timber = "4.7.1"
versions.transition = "1.3.0"
versions.truth = "1.0.1"
-versions.work = "2.4.0"
+versions.work = "2.7.0-beta01"
ext.versions = versions
def build_versions = [:]
-build_versions.min_sdk = 14
-build_versions.compile_sdk = 29
+build_versions.min_sdk = 21
+build_versions.compile_sdk = 'android-S'
build_versions.target_sdk = 29
build_versions.build_tools = "29.0.3"
ext.build_versions = build_versions