package Ġcom . p all aw . services and background tasks . module . job scheduler Ċ Ċ import Ġandroid . app . job . Job Info Ċ import Ġandroid . app . job . Job Scheduler Ċ import Ġandroid . content . Component Name Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . p all aw . services and background tasks . R Ċ import Ġcom . p all aw . services and background tasks . util . Text Logger Ċ import Ġkotlinx . android . synt hetic . main . fragment _ job _ scheduler .* Ċ import Ġkotlinx . android . synt hetic . main . log _ view .* Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass . Ċ Ġ*/ Ċ class ĠJob Scheduler Fragment Ġ: ĠFragment (), ĠView . OnClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠJOB _ ID : ĠInt Ġ= Ġ 1 2 3 4 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ job _ scheduler , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// set Ġclick Ġlistener Ġon Ġall Ġbuttons Ġat Ġonce ĊĠĠĠĠĠĠĠ ĠlistOf < Button >( btn _ schedule _ job , Ġbtn _ c anc le _ schedule _ job ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . setOnClickListener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( v ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn _ schedule _ job Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġschedule Job () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn _ c anc le _ schedule _ job Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Scheduled Job () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcancel Scheduled Job () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText Logger . log ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt _ logs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Scheduled Ġjob Ġcancelled " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjob Scheduler Ġ= Ġit . getSystem Service ( Context . JOB _ SCHEDUL ER _ SERVICE ) Ġas ĠJob Scheduler ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjob Scheduler . cancel ( JOB _ ID ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġschedule Job () Ġ{ ĊĠĠĠĠĠĠĠ ĠText Logger . log ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtxt _ logs , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" schedule Job ()" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjob Scheduler Ġ= Ġit . getSystem Service ( Context . JOB _ SCHEDUL ER _ SERVICE ) Ġas ĠJob Scheduler ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomponent Name Ġ= ĠComponent Name ( it , ĠMy JobService :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjob Info Ġ= ĠJob Info . Builder ( JOB _ ID , Ġcomponent Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Requires Ch arging ( true )// Ġch arging Ġis Ġrequired ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Required Network Type ( Job Info . NETWORK _ TYPE _ UN METER ED )// Ġwifi Ġrequired ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pers isted ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Periodic ( 1 5 Ġ* Ġ 6 0 Ġ* Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġjob Scheduler . schedule ( job Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ== ĠJob Scheduler . RESULT _ SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Logger . log ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt _ logs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Job ĠScheduled " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Logger . log ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt _ logs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Job ĠScheduled " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ