From c2ae055853339b216a0ec0726a4c3a2278169b03 Mon Sep 17 00:00:00 2001 From: Murat Yener Date: Thu, 18 Feb 2021 13:06:52 -0800 Subject: [PATCH 1/2] WorkManager library updated to 2.7.0-alpha01 --- .../java/com/example/background/ImageOperations.kt | 11 +++-------- .../background/workers/filters/BaseFilterWorker.kt | 10 +++------- WorkManagerSample/versions.gradle | 4 ++-- 3 files changed, 8 insertions(+), 17 deletions(-) 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..b47b1e2c 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 @@ -84,12 +77,14 @@ class ImageOperations( /** * Creates a [OneTimeWorkRequest] with the given inputData and a [tag] if set. */ + @SuppressLint("UnsafeExperimentalUsageError") private inline fun workRequest( inputData: Data = imageInputData, tag: String? = null ) = 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..bcf4ec80 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,8 @@ abstract class BaseFilterWorker(context: Context, parameters: WorkerParameters) /** * Create ForegroundInfo required to run a Worker in a foreground service. */ - private fun createForegroundInfo(): ForegroundInfo { + @ExperimentalExpeditedWork + 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..6be207fa 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-alpha01" ext.versions = versions def build_versions = [:] build_versions.min_sdk = 14 -build_versions.compile_sdk = 29 +build_versions.compile_sdk = 'android-S' build_versions.target_sdk = 29 build_versions.build_tools = "29.0.3" ext.build_versions = build_versions From cda2363e351b891be4a9c3d8f490be9d572218ce Mon Sep 17 00:00:00 2001 From: Caren Date: Thu, 2 Sep 2021 16:05:47 -0700 Subject: [PATCH 2/2] Upgrade workmanager to 2.7-beta01 (#1017) * Upgrade workmanager to 2.7-beta01 * Remove extra equal sign --- WorkManagerSample/app/build.gradle | 2 +- WorkManagerSample/app/src/main/AndroidManifest.xml | 13 +++++++++---- .../java/com/example/background/FilterActivity.kt | 2 +- .../java/com/example/background/FilterViewModel.kt | 6 +++++- WorkManagerSample/lib/build.gradle | 2 +- .../java/com/example/background/ImageOperations.kt | 1 - .../background/workers/filters/BaseFilterWorker.kt | 1 - WorkManagerSample/versions.gradle | 4 ++-- 8 files changed, 19 insertions(+), 12 deletions(-) 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 b47b1e2c..c0143d65 100644 --- a/WorkManagerSample/lib/src/main/java/com/example/background/ImageOperations.kt +++ b/WorkManagerSample/lib/src/main/java/com/example/background/ImageOperations.kt @@ -77,7 +77,6 @@ class ImageOperations( /** * Creates a [OneTimeWorkRequest] with the given inputData and a [tag] if set. */ - @SuppressLint("UnsafeExperimentalUsageError") private inline fun workRequest( inputData: Data = imageInputData, tag: String? = null 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 bcf4ec80..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 @@ -104,7 +104,6 @@ abstract class BaseFilterWorker(context: Context, parameters: WorkerParameters) /** * Create ForegroundInfo required to run a Worker in a foreground service. */ - @ExperimentalExpeditedWork override suspend fun getForegroundInfo(): ForegroundInfo { // For a real world app you might want to use a different id for each Notification. val notificationId = 1 diff --git a/WorkManagerSample/versions.gradle b/WorkManagerSample/versions.gradle index 6be207fa..0d346174 100644 --- a/WorkManagerSample/versions.gradle +++ b/WorkManagerSample/versions.gradle @@ -62,11 +62,11 @@ versions.rxjava2 = "2.1.3" versions.timber = "4.7.1" versions.transition = "1.3.0" versions.truth = "1.0.1" -versions.work = "2.7.0-alpha01" +versions.work = "2.7.0-beta01" ext.versions = versions def build_versions = [:] -build_versions.min_sdk = 14 +build_versions.min_sdk = 21 build_versions.compile_sdk = 'android-S' build_versions.target_sdk = 29 build_versions.build_tools = "29.0.3"