package Ġme . yk rank . s 1 next . widget . glide Ċ Ċ import Ġcom . bump tech . glide . Priority Ċ import Ġcom . bump tech . glide . integration . okhttp 3 . Ok Http Stream Fetcher Ċ import Ġcom . bump tech . glide . load . DataSource Ċ import Ġcom . bump tech . glide . load . data . Data Fetcher Ċ import Ġcom . bump tech . glide . load . model . G lide Url Ċ import Ġcom . github . yk rank . android tools . util . L Ċ import Ġcom . github . yk rank . android tools . widget . App Exception Ċ import Ġcom . li ul ish uo . ok download . Download Task Ċ import Ġcom . li ul ish uo . ok download . core . cause . End Cause Ċ import Ġcom . li ul ish uo . ok download . core . listener . assist . Listener 1 Ass ist Ċ import Ġme . yk rank . s 1 next . App Ċ import Ġme . yk rank . s 1 next . data . pref . Download Preferences Manager Ċ import Ġme . yk rank . s 1 next . widget . download . Image Download Manager Ċ import Ġme . yk rank . s 1 next . widget . download . Image Download Task Ċ import Ġme . yk rank . s 1 next . widget . download . Progress Download Listener Ċ import Ġokhttp 3 . Call Ċ import Ġokhttp 3 . Http Url . Companion . to Http Url OrNull Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ import Ġjavax . inject . Inject Ċ Ċ open Ġclass ĠMulti Thread Http Stream Fetcher ( client : ĠCall . Factory , Ġval Ġurl : ĠG lide Url ) Ġ: ĠOk Http Stream Fetcher ( client , Ġurl ) Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġimage Download Manager : ĠImage Download Manager ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġm Download Preferences Manager : ĠDownload Preferences Manager ĊĊĠĠĠ Ġvar Ġdownload Task : ĠImage Download Task ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġstream : ĠInputStream ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġconnecting Ġ= Ġfalse ĊĠĠĠ Ġvar Ġend Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠApp . app Component . inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Data ( priority : ĠPriority , Ġcallback : ĠData Fetcher . Data Callback < in ĠInputStream >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! m Download Preferences Manager . multi Thread Download ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . load Data ( priority , Ġcallback ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( url . toString Url ()?. to Http Url OrNull () Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . load Data ( priority , Ġcallback ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconnecting Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġend Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġdownload Task Ġ= Ġimage Download Manager . download ( url . toString Url (), Ġobject Ġ: ĠProgress Download Listener () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtask Start ( task : ĠDownload Task ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnecting Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . d (" å¤ļ çº¿ç¨ĭ ä¸ĭè½½ ï¼ļ ${ task . url }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtask End ( task : ĠDownload Task , Ġcause : ĠEnd Cause , Ġreal Cause : Ġjava . lang . Exception ?, Ġmodel : ĠListener 1 Ass ist . Listener 1 Model ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . task End ( task , Ġcause , Ġreal Cause , Ġmodel ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cause Ġ== ĠEnd Cause . COMPLETED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . d (" å¤ļ çº¿ç¨ĭ ä¸ĭè½½ å®ĮæĪĲ ï¼ļ ${ task . url }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstream Ġ= Ġtask . file ?. inputStream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Data Ready ( stream ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . d (" å¤ļ çº¿ç¨ĭ ä¸ĭè½½ å¤±è´¥ ï¼ļ ${ task . url }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( real Cause Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . print ( real Cause ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Load Failed ( real Cause Ġ?: ĠApp Exception (" Image Ġdownload Ġerror ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcleanup () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstream ?. close () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIgnore d ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdownload Task Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcancel () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! connecting ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Task ?. cancel () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget DataSource (): ĠDataSource Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( m Download Preferences Manager . multi Thread Download ) ĠDataSource . LOCAL Ġelse Ġsuper . getDataSource () ĊĠĠĠ Ġ} Ċ } Ċ