Skip to content

Instantly share code, notes, and snippets.

@WSAyan
Created April 25, 2021 00:53
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save WSAyan/7f3a75d05332984e24ad5418f0b1e38b to your computer and use it in GitHub Desktop.
Save WSAyan/7f3a75d05332984e24ad5418f0b1e38b to your computer and use it in GitHub Desktop.
In android work manager, minimum time interval between two periodic requests is 15 minutes. This is a hack to ignore the time interval.
package com.wsyan.worker
import android.content.Context
import android.os.Handler
import android.os.Looper
import android.util.Log
import android.widget.Toast
import androidx.work.CoroutineWorker
import androidx.work.Worker
import androidx.work.WorkerParameters
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import dagger.android.HasAndroidInjector
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.runBlocking
import java.util.concurrent.TimeUnit
import javax.inject.Inject
/**
* example worker class
*/
class SomeWorker(context: Context, workerParams: WorkerParameters) :
CoroutineWorker(context, workerParams) {
var startTime: Long = 0
override suspend fun doWork(): Result {
startTime = TimeUnit.MILLISECONDS.toMinutes(System.currentTimeMillis())
doSomeWork()
return Result.success()
}
private suspend fun doSomeWork() {
Log.d("SomeWorker", "-------> working")
val currentTime = TimeUnit.MILLISECONDS.toMinutes(System.currentTimeMillis())
val diff = currentTime - startTime
if (diff < 12L) {
Thread.sleep(30000) // this is the new time interval
doSomeWork()
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment