Skip to content

Commit

Permalink
Upgrade to WorkManager 1.0.0-alpha07
Browse files Browse the repository at this point in the history
- Remove workarounds for previously Nullable WorkManager.getInstance()
- Switch to workDataOf()
- Remove second parameter from Data.getString()
  • Loading branch information
ianhanniballake committed Aug 17, 2018
1 parent 3a08d1f commit f9b85bd
Show file tree
Hide file tree
Showing 8 changed files with 25 additions and 36 deletions.
Expand Up @@ -62,7 +62,7 @@ class ArtworkLoadWorker : Worker() {
private const val ARTWORK_LOAD_THROTTLE = 250 // quarter second

internal fun enqueueNext() {
val workManager = WorkManager.getInstance() ?: return
val workManager = WorkManager.getInstance()
workManager.beginUniqueWork(TAG, ExistingWorkPolicy.REPLACE,
OneTimeWorkRequestBuilder<ArtworkLoadWorker>().build())
.enqueue()
Expand All @@ -72,7 +72,7 @@ class ArtworkLoadWorker : Worker() {
loadFrequencySeconds: Long,
loadOnWifi: Boolean
) {
val workManager = WorkManager.getInstance() ?: return
val workManager = WorkManager.getInstance()
workManager.enqueueUniquePeriodicWork(PERIODIC_TAG, ExistingPeriodicWorkPolicy.REPLACE,
PeriodicWorkRequestBuilder<ArtworkLoadWorker>(
loadFrequencySeconds, TimeUnit.SECONDS,
Expand All @@ -88,7 +88,7 @@ class ArtworkLoadWorker : Worker() {
}

fun cancelPeriodic() {
val workManager = WorkManager.getInstance() ?: return
val workManager = WorkManager.getInstance()
workManager.cancelUniqueWork(PERIODIC_TAG)
}
}
Expand Down
Expand Up @@ -29,10 +29,10 @@ import android.util.Log
import androidx.core.content.edit
import androidx.core.net.toUri
import androidx.work.Constraints
import androidx.work.Data
import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.WorkManager
import androidx.work.Worker
import androidx.work.workDataOf
import com.google.android.apps.muzei.api.internal.ProtocolConstants
import com.google.android.apps.muzei.api.internal.ProtocolConstants.KEY_LAST_LOADED_TIME
import com.google.android.apps.muzei.api.internal.ProtocolConstants.METHOD_GET_LOAD_INFO
Expand Down Expand Up @@ -62,20 +62,16 @@ class ProviderChangedWorker : Worker() {
private const val PREF_PERSISTENT_LISTENERS = "persistentListeners"

internal fun enqueueSelected() {
val workManager = WorkManager.getInstance() ?: return
val workManager = WorkManager.getInstance()
workManager.enqueue(OneTimeWorkRequestBuilder<ProviderChangedWorker>()
.setInputData(Data.Builder()
.putString(TAG, "selected")
.build())
.setInputData(workDataOf(TAG to "selected"))
.build())
}

internal fun enqueueChanged() {
val workManager = WorkManager.getInstance() ?: return
val workManager = WorkManager.getInstance()
workManager.enqueue(OneTimeWorkRequestBuilder<ProviderChangedWorker>()
.setInputData(Data.Builder()
.putString(TAG, "changed")
.build())
.setInputData(workDataOf(TAG to "changed"))
.build())
}

Expand Down Expand Up @@ -146,32 +142,31 @@ class ProviderChangedWorker : Worker() {

@RequiresApi(Build.VERSION_CODES.N)
private fun scheduleObserver(contentUri: Uri) {
val workManager = WorkManager.getInstance() ?: return
val workManager = WorkManager.getInstance()
workManager.enqueue(OneTimeWorkRequestBuilder<ProviderChangedWorker>()
.addTag(PERSISTENT_CHANGED_TAG)
.setInputData(Data.Builder()
.putString(TAG, PERSISTENT_CHANGED_TAG)
.putString(EXTRA_CONTENT_URI, contentUri.toString())
.build())
.setInputData(workDataOf(
TAG to PERSISTENT_CHANGED_TAG,
EXTRA_CONTENT_URI to contentUri.toString()))
.setConstraints(Constraints.Builder()
.addContentUriTrigger(contentUri, true)
.build())
.build())
}

private fun cancelObserver() {
val workManager = WorkManager.getInstance() ?: return
val workManager = WorkManager.getInstance()
workManager.cancelAllWorkByTag(PERSISTENT_CHANGED_TAG)
}
}

override fun doWork() = runBlocking(syncSingleThreadContext) {
val tag = inputData.getString(TAG, "") ?: ""
val tag = inputData.getString(TAG) ?: ""
// First schedule the observer to pick up any changes fired
// by the work done in handleProviderChange
if (tag == PERSISTENT_CHANGED_TAG &&
Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
inputData.getString(EXTRA_CONTENT_URI, "")?.toUri()?.run {
inputData.getString(EXTRA_CONTENT_URI)?.toUri()?.run {
scheduleObserver(this)
}
}
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Expand Up @@ -28,7 +28,7 @@ buildscript {
roomVersion = "1.1.1"
pagingVersion = "1.0.1"
navigationVersion = "1.0.0-alpha05"
workManagerVersion = "1.0.0-alpha04"
workManagerVersion = "1.0.0-alpha07"
playServicesWearableVersion = "15.0.1"
firebaseCoreVersion = "16.0.1"
firebasePerfVersion = "16.0.0"
Expand Down
Expand Up @@ -33,7 +33,7 @@ class UnsplashExampleWorker : Worker() {
private const val TAG = "UnsplashExample"

internal fun enqueueLoad() {
val workManager = WorkManager.getInstance() ?: return
val workManager = WorkManager.getInstance()
workManager.enqueue(OneTimeWorkRequestBuilder<UnsplashExampleWorker>()
.setConstraints(Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
Expand Down
Expand Up @@ -81,7 +81,7 @@ class FeaturedArtWorker : Worker() {
Log.d(TAG, "Enqueuing next artwork with delay of " +
DateUtils.formatElapsedTime(TimeUnit.MILLISECONDS.toSeconds(delay)))
}
val workManager = WorkManager.getInstance() ?: return
val workManager = WorkManager.getInstance()
workManager.beginUniqueWork(
TAG,
ExistingWorkPolicy.KEEP,
Expand Down
Expand Up @@ -30,11 +30,11 @@ import android.support.v4.content.ContextCompat
import android.text.TextUtils
import android.text.format.DateUtils
import android.util.Log
import androidx.work.Data
import androidx.work.ExistingWorkPolicy
import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.WorkManager
import androidx.work.Worker
import androidx.work.workDataOf
import com.google.android.apps.muzei.api.provider.Artwork
import com.google.android.apps.muzei.api.provider.ProviderContract
import kotlinx.coroutines.experimental.launch
Expand All @@ -56,20 +56,16 @@ class GalleryScanWorker : Worker() {

fun enqueueInitialScan(ids: List<Long>) {
val workManager = WorkManager.getInstance()
?: return
workManager.enqueue(ids.map { id ->
OneTimeWorkRequestBuilder<GalleryScanWorker>()
.addTag(INITIAL_SCAN_TAG)
.setInputData(Data.Builder()
.putLong(INITIAL_SCAN_ID, id)
.build())
.setInputData(workDataOf(INITIAL_SCAN_ID to id))
.build()
})
}

fun enqueueRescan() {
val workManager = WorkManager.getInstance()
?: return
workManager.beginUniqueWork("rescan",
ExistingWorkPolicy.REPLACE,
OneTimeWorkRequestBuilder<GalleryScanWorker>()
Expand Down
Expand Up @@ -41,7 +41,7 @@ class ArtworkComplicationWorker : Worker() {
private const val TAG = "ArtworkComplication"

internal fun scheduleComplicationUpdate() {
val workManager = WorkManager.getInstance() ?: return
val workManager = WorkManager.getInstance()
workManager.beginUniqueWork(TAG, ExistingWorkPolicy.REPLACE,
OneTimeWorkRequestBuilder<ArtworkComplicationWorker>()
.setConstraints(Constraints.Builder()
Expand All @@ -55,7 +55,7 @@ class ArtworkComplicationWorker : Worker() {
}

internal fun cancelComplicationUpdate() {
val workManager = WorkManager.getInstance() ?: return
val workManager = WorkManager.getInstance()
workManager.cancelUniqueWork(TAG)
if (BuildConfig.DEBUG) {
Log.d(TAG, "Work cancelled")
Expand Down
Expand Up @@ -20,10 +20,10 @@ import android.content.ComponentName
import android.content.pm.PackageManager
import android.net.Uri
import android.util.Log
import androidx.work.Data
import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.WorkManager
import androidx.work.Worker
import androidx.work.workDataOf
import com.google.android.apps.muzei.FullScreenActivity
import com.google.android.apps.muzei.api.provider.ProviderContract
import com.google.android.apps.muzei.complications.ArtworkComplicationProviderService
Expand Down Expand Up @@ -56,12 +56,10 @@ class DataLayerLoadWorker : Worker() {
* @param showNotification Show a notification to activate Muzei if the artwork is not found
*/
fun enqueueLoad(showNotification: Boolean = false) {
val workManager = WorkManager.getInstance() ?: return
val workManager = WorkManager.getInstance()
workManager.enqueue(OneTimeWorkRequestBuilder<DataLayerLoadWorker>().apply{
if (showNotification) {
setInputData(Data.Builder()
.putBoolean(SHOW_ACTIVATE_NOTIFICATION_EXTRA, true)
.build())
setInputData(workDataOf(SHOW_ACTIVATE_NOTIFICATION_EXTRA to true))
}
}.build())
}
Expand Down

0 comments on commit f9b85bd

Please sign in to comment.