/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 - 2 0 1 9 ĠAnd ri us ĠBar uck is Ġwww . bar uck is . com Ġ| Ġk ript of ol io . app Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . bar uck is . k ript of ol io . ui . common Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Job Ċ Ċ abstract Ġclass ĠBase ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġ// ĠIn ĠKotlin , Ġall Ġcor outines Ġrun Ġinside Ġa ĠCor outine Scope . ĊĠĠĠ Ġ// ĠA Ġscope Ġcontrols Ġthe Ġlifetime Ġof Ġcor outines Ġthrough Ġits Ġjob . ĊĠĠĠ Ġprivate Ġval ĠviewModel Job Ġ= ĠJob () ĊĠĠĠ Ġ// ĠSince Ġui Scope Ġhas Ġa Ġdefault Ġdispatcher Ġof ĠDispatch ers . Main , Ġthis Ġcoroutine Ġwill Ġbe Ġlaunched ĊĠĠĠ Ġ// Ġin Ġthe Ġmain Ġthread . ĊĠĠĠ Ġval Ġui Scope Ġ= ĠCor outine Scope ( Dispatch ers . Main Ġ+ ĠviewModel Job ) ĊĊĊĠĠĠ Ġ// Ġon Cle ared Ġis Ġcalled Ġwhen Ġthe ĠViewModel Ġis Ġno Ġlonger Ġused Ġand Ġwill Ġbe Ġdestroyed . ĊĠĠĠ Ġ// ĠThis Ġtypically Ġhappens Ġwhen Ġthe Ġuser Ġnavig ates Ġaway Ġfrom Ġthe ĠActivity Ġor ĠFragment Ġthat Ġwas ĊĠĠĠ Ġ// Ġusing Ġthe ĠViewModel . ĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġyou Ġcancel Ġthe Ġjob Ġof Ġa Ġscope , Ġit Ġcancel s Ġall Ġcor outines Ġstarted Ġin Ġthat Ġscope . ĊĠĠĠĠĠĠĠ Ġ// ĠIt 's Ġimportant Ġto Ġcancel Ġany Ġcor outines Ġthat Ġare Ġno Ġlonger Ġrequired Ġto Ġavoid Ġunnecessary ĊĠĠĠĠĠĠĠ Ġ// Ġwork Ġand Ġmemory Ġle aks . ĊĠĠĠĠĠĠĠ ĠviewModel Job . cancel () ĊĠĠĠ Ġ} Ċ }