Android WorkManager Check if Work Is in Queue or Running

May 14, 2019
getWorkInfos example



dependencies {    //    def work_version = '2.0.1'    implementation "$work_version"    //    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.2.1'    //    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.2.1'}


suspend fun check(workName: String) {    Timber.d("$workName.check")    val workManager = WorkManager.getInstance()    val workInfos = workManager.getWorkInfosForUniqueWork(workName).await()    if (workInfos.size == 1) {        // for (workInfo in workInfos) {        val workInfo = workInfos[0]        Timber.d("workInfo.state=${workInfo.state}, id=${}")        if (workInfo.state == WorkInfo.State.BLOCKED || workInfo.state == WorkInfo.State.ENQUEUED || workInfo.state == WorkInfo.State.RUNNING) {            Timber.d("isAlive")        } else {            Timber.d("isDead")        }    } else {        Timber.d("notFound")    }}

NOTE: What is WorkInfo.State.BLOCKED?

From this source

BLOCKED : This state occurs only if the work is in a chain and is not the next work in the chain.

ENQUEUED : Work enters this state as soon as the work is next in the chain of work and eligible to run. This work may still be waiting on Constraints to be met.

RUNNING : In this state, the work is actively executing. For Workers, this means the doWork() method has been called.


val WORK_NAME = ...check(WORK_NAME)

❤️ Is this article helpful?

Buy me a coffee ☕ or support my work via PayPal to keep this space 🖖 and ad-free.

Do send some 💖 to @d_luaz or share this article.

✨ By Desmond Lua

A dream boy who enjoys making apps, travelling and making youtube videos. Follow me on @d_luaz

👶 Apps I built

Travelopy - discover travel places in Malaysia, Singapore, Taiwan, Japan.