package Ġcom . to an _ it c . core . rx java Ċ Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . Observable On Subscribe Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . ob servers . Disposable Observer Ċ import Ġio . reactivex . schedul ers . Schedulers ĊĊ Ċ object ĠB g Job Helper Ġ{ ĊĊĠĠĠ Ġinterface ĠJob Lifecycle Events Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġset Ui Before Bg Job Starts () ĊĠĠĠĠĠĠĠ Ġfun Ġdo Job In Background ( job Signals : ĠJob Signals ) ĊĠĠĠĠĠĠĠ Ġfun Ġset Ui On Job Complete () ĊĠĠĠĠĠĠĠ Ġfun Ġset Ui On Job Error () ĊĠĠĠĠĠĠĠ Ġfun Ġset Common Ui After Job End s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠJob Lifecycle Single Event Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġdo Job In Background () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠJob Signals Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Job Complete () ĊĠĠĠĠĠĠĠ Ġfun Ġon Job Error () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrun Background Job ( composite Disposable : ĠComposite Disposable , Ġjob Lifecycle Events : ĠJob Lifecycle Events ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġjob Lifecycle Events . set Ui Before Bg Job Starts () ĊĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . create < Any > Ġ{ Ġemitter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjob Lifecycle Events . do Job In Background ( object Ġ: ĠJob Signals Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Job Complete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onComplete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Job Error () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onError ( Throwable ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe With ( object Ġ: ĠDis posable Observer < Any >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjob Lifecycle Events . set Common Ui After Job End s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjob Lifecycle Events . set Ui On Job Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( o : ĠAny ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjob Lifecycle Events . set Common Ui After Job End s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjob Lifecycle Events . set Ui On Job Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġas ĠDis posable ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrun Background Job ( composite Disposable : ĠComposite Disposable , Ġjob Lifecycle Single Event : ĠJob Lifecycle Single Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . create ( Observable On Subscribe < Any > Ġ{ Ġjob Lifecycle Single Event . do Job In Background () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe With ( object Ġ: ĠDis posable Observer < Any >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( o : ĠAny ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġas ĠDis posable ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ /* ĠUSE Ċ // RUN ĠUI Ċ Bg Job Helper . run Background Job ( composite Disposable , Ġnew ĠB g Job Helper . Job Lifecycle Events () Ġ{ ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġvoid Ġset Ui Before Bg Job Starts () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠUI Ġtasks Ġto Ġexecute Ġbefore Ġthe Ġbackground Ġjob Ġstarts ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġvoid Ġdo Job In Background ( Bg Job Helper . Job Signals Ġjob Signals ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġdo Ġyour Ġjob Ġhere . ĠIt Ġwill Ġbe Ġexecuted Ġin Ġa Ġbackground Ġthread ĊĠĠĠĠĠĠĠ Ġsignals . onComplete (); Ġ// Ġuse Ġthis Ġto Ġnotify Ġthat Ġyour Ġtask Ġhas Ġcompleted Ġsuccessfully ĊĠĠĠĠĠĠĠ Ġsignals . onError (); Ġ// Ġuse Ġthis Ġto Ġnotify Ġthat Ġan Ġerror Ġhas Ġoccured ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġvoid Ġset Ui On Job Complete () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠUI Ġtasks Ġto Ġexecute Ġafter Ġthe Ġtask Ġhas Ġcompleted Ġsuccessfully ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġvoid Ġset Ui On Job Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠUI Ġtasks Ġto Ġexecute Ġafter Ġan Ġerror Ġhas Ġoccured ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġvoid Ġset Common Ui After Job End s () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġthis Ġwill Ġexecute Ġbefore ĠonComplete () Ġ/ ĠonError () ĊĠĠĠĠĠĠĠ Ġ// Ġyou Ġcan Ġput Ġhere Ġcommon ĠUI Ġtasks Ġwhich Ġare Ġneeded Ġto Ġbe Ġperformed , Ġafter Ġthe Ġjob Ġis Ġdone Ġor Ġafter Ġan Ġerror Ġhas Ġoccured ĊĠĠĠĠĠĠĠ Ġ// Ġ( like Ġhiding Ġthe Ġprogress Ġbar ) ĊĠĠĠ Ġ} Ċ }); Ċ Ċ // RUN ĠBACK GROUND Ċ Bg Job Helper . run Background Job ( composite Disposable , Ġnew ĠB g Job Helper . Job Lifecycle Single Event () Ġ{ ĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġvoid Ġdo Job In Background () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġdo Ġyour Ġjob Ġhere . ĠIt Ġwill Ġbe Ġexecuted Ġin Ġa Ġbackground Ġthread ĊĠĠĠ Ġ} Ċ }); Ċ Ġ*/