package Ġio . k ung fury . co worker Ċ Ċ import Ġkotlinx . coroutines . experimental . Job Ċ import Ġkotlinx . coroutines . experimental . launch Ċ Ċ import Ġjava . time . Instant Ċ Ċ import Ġkotlin . coroutines . experimental . Coroutine Context Ċ Ċ /** Ċ Ġ* ĠA ĠWrapper Ġaround ĠDelay ed Kotlin Work Ġimplementing Ġa Ġlot Ġof Ġthe Ġboilerplate Ġfor Ġyou . Ċ Ġ* Ċ Ġ* Ġ@ param Ġid Ċ Ġ* Ġ ĠThe ĠID Ġof Ġthis Ġpiece Ġof Ġwork . Ċ Ġ* Ġ@ param Ġstage Ċ Ġ* Ġ ĠThe Ġstage Ġthis Ġp ice Ġof Ġwork Ġis Ġrunning Ġin . Ċ Ġ* Ġ@ param Ġstr and Ċ Ġ* Ġ ĠThe Ġstr and Ġof Ġthis Ġpiece Ġof Ġwork . Ċ Ġ* Ġ@ param Ġpriority Ċ Ġ* Ġ ĠThe Ġpriority Ġof Ġthis Ġpiece Ġof Ġwork . Ċ Ġ*/ Ċ abstract Ġclass ĠBackground Kotlin Work ( ĊĠĠĠ Ġid : ĠLong , ĊĠĠĠ Ġstage : ĠInt , ĊĠĠĠ Ġstr and : ĠString , ĊĠĠĠ Ġpriority : ĠInt Ċ ) Ġ: ĠDelay ed Kotlin Work Ġ{ ĊĠĠĠ Ġoverride Ġval ĠId : ĠLong Ġ= Ġid ĊĠĠĠ Ġoverride Ġval ĠStage : ĠInt Ġ= Ġstage ĊĠĠĠ Ġoverride Ġval ĠPriority : ĠInt Ġ= Ġpriority ĊĠĠĠ Ġoverride Ġval ĠStr and : ĠString Ġ= Ġstr and ĊĊĠĠĠ Ġprivate Ġval ĠstartTime Ġ= ĠInstant . now () ĊĠĠĠ Ġoverride Ġfun Ġget StartTime (): ĠInstant Ġ= ĠstartTime ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPerforms Ġthe Ġactual Ġwork Ġof Ġthe Ġpiece Ġof Ġwork . ĠImplemented Ġby Ġthe Ġuser . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġstate ĊĠĠĠĠ Ġ* Ġ ĠThe Ġstate Ġof Ġthe Ġpiece Ġof Ġwork . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġsuspend Ġfun ĠWork ( state : ĠString ) ĊĊĠĠĠ Ġoverride Ġfun ĠWork Part ( state : ĠString , Ġcoroutine Context : ĠCor outine Context ): ĠJob Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlaunch ( coroutine Context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWork ( state ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ