package Ġcom . example . background . workers Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . net . Uri Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ import Ġandroidx . work . Worker Ċ import Ġandroidx . work . Worker Parameters Ċ import Ġandroidx . work . work Data Of Ċ import Ġcom . example . background . KEY _ IMAGE _ URI Ċ Ċ private Ġconst Ġval ĠTAG Ġ= Ġ" Blur Worker " Ċ Ċ class ĠBl ur Worker ( ctx : ĠContext , Ġparams : ĠWorker Parameters ) Ġ: ĠWorker ( ctx , Ġparams ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOverride Ġthis Ġmethod Ġto Ġdo Ġyour Ġactual Ġbackground Ġprocessing . Ġ ĠThis Ġmethod Ġis Ġcalled Ġon Ġa ĊĠĠĠĠ Ġ* Ġbackground Ġthread Ġ- Ġyou Ġare Ġrequired Ġto Ġ** s ynchronously ** Ġdo Ġyour Ġwork Ġand Ġreturn Ġthe ĊĠĠĠĠ Ġ* Ġ[ android x . work . List enable Worker . Result ] Ġfrom Ġthis Ġmethod . Ġ ĠOnce Ġyou Ġreturn Ġfrom Ġthis ĊĠĠĠĠ Ġ* Ġmethod , Ġthe ĠWorker Ġis Ġconsidered Ġto Ġhave Ġfinished Ġwhat Ġits Ġdoing Ġand Ġwill Ġbe Ġdestroyed . Ġ ĠIf ĊĠĠĠĠ Ġ* Ġyou Ġneed Ġto Ġdo Ġyour Ġwork Ġasynchronously Ġon Ġa Ġthread Ġof Ġyour Ġown Ġchoice , Ġsee ĊĠĠĠĠ Ġ* Ġ[ List enable Worker ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠA ĠWorker Ġhas Ġa Ġwell Ġdefined ĊĠĠĠĠ Ġ* Ġ[ execution Ġwindow ]( https :// d . android . com / reference / android / app / job / Job Scheduler ) ĊĠĠĠĠ Ġ* Ġto Ġfinish Ġits Ġexecution Ġand Ġreturn Ġa Ġ[ android x . work . List enable Worker . Result ]. Ġ ĠAfter ĊĠĠĠĠ Ġ* Ġthis Ġtime Ġhas Ġexpired , Ġthe ĠWorker Ġwill Ġbe Ġsign alled Ġto Ġstop . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġ[ android x . work . List enable Worker . Result ] Ġof Ġthe Ġcomputation ; Ġnote Ġthat ĊĠĠĠĠ Ġ* Ġdependent Ġwork Ġwill Ġnot Ġexecute Ġif Ġyou Ġuse ĊĠĠĠĠ Ġ* Ġ[ android x . work . List enable Worker . Result . failure ] Ġor ĊĠĠĠĠ Ġ* Ġ[ android x . work . List enable Worker . Result . failure ] ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġoverride Ġfun Ġdo Work (): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Context Ġ= Ġapplication Context ĊĠĠĠĠĠĠĠ Ġval Ġresource Uri Ġ= Ġinput Data . getString ( KEY _ IMAGE _ URI ) ĊĊĠĠĠĠĠĠĠ Ġmake Status Notification (" Blur ring Ġimage ", Ġapp Context ) ĊĊĠĠĠĠĠĠĠ Ġsleep () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( resource Uri )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Invalid Ġinput Ġuri ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Invalid Ġinput Ġuri ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolver Ġ= Ġapp Context . content Resolver ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpicture Ġ= ĠBitmap Factory . decode Stream ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolver . open InputStream ( Uri . parse ( resource Uri )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġblur Bitmap ( picture , Ġapp Context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWrite Ġbitmap Ġto Ġa Ġtemp Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Uri Ġ= Ġwrite Bitmap ToFile ( app Context , Ġoutput ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Data Ġ= Ġwork Data Of ( KEY _ IMAGE _ URI Ġto Ġoutput Uri . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( output Data ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( throwable : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrowable . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }