package Ġcom . k uk y . com v vm helper . ui . activity Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Environment Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . kk . android . com v vm helper . ank o . long Toast Ċ import Ġcom . kk . android . com v vm helper . ank o . toast Ċ import Ġcom . kk . android . com v vm helper . anno . Activity Config Ċ import Ġcom . kk . android . com v vm helper . anno . Public Directory Type Ċ import Ġcom . kk . android . com v vm helper . extension .* Ċ import Ġcom . kk . android . com v vm helper . helper .* Ċ import Ġcom . kk . android . com v vm helper . listener . OnError Reload Listener Ċ import Ġcom . kk . android . com v vm helper . ui . Base Activity Ċ import Ġcom . kk . android . com v vm helper . utils . dp 2 px Ċ import Ġcom . kk . android . com v vm helper . widget . Request StatusCode Ċ import Ġcom . k uk y . com v vm helper . R Ċ import Ġcom . k uk y . com v vm helper . databinding . Activity Http Demo Binding Ċ import Ġcom . k uk y . com v vm helper . helper . ApiService Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Job Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . io . File Ċ Ċ @ Activity Config ( status Bar Color String Ġ= Ġ"# 0 0 8 5 7 7 ") Ċ class ĠHttp Demo Activity Ġ: ĠBase Activity < Activity Http Demo Binding >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Enabled Download Ġby Ġlazy Ġ{ Ġintent . getBoolean Extra (" switch On ", Ġfalse ) Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġm Request Job : ĠJob ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġlayout Id () Ġ= ĠR . layout . activity _ http _ demo ĊĊĠĠĠ Ġoverride Ġfun Ġinit Activity ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Binding . holder Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġm Binding . show Download Ġ= Ġm Enabled Download ĊĠĠĠĠĠĠĠ Ġm Binding . request Code Ġ= ĠRequest StatusCode . Loading ĊĠĠĠĠĠĠĠ Ġm Binding . reload Ġ= ĠOn Error Reload Listener Ġ{ Ġrequest By Ret rofit () Ġ} ĊĠĠĠĠĠĠĠ Ġm Binding . sc roller . layout Params Ġ= Ġ( m Binding . sc roller . layout Params Ġas ĠViewGroup . Margin LayoutParams ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Margin Ġ= Ġm Enabled Download . yes Ġ{ Ġ 6 0 f . dp 2 px (). toInt () Ġ}. otherwise Ġ{ Ġ 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdelay Launch ( 1 _ 0 0 0 ) Ġ{ Ġrequest By Ret rofit () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdownload () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Request Job ?. cancel () ĊĠĠĠĠĠĠĠ Ġm Request Job Ġ= Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" start Ġdownload ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠDownload Helper . instance ( this @ Http Demo Activity ). simple Download Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Url Ġ= Ġ" https :// t 7 . baidu . com / it / u = 4 1 6 2 6 1 1 3 9 4 , 4 2 7 5 9 1 3 9 3 6 & fm = 1 9 3 & f = G IF " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstored FilePath Ġ= ĠFile ( Environment . DIRECTORY _ DC IM , Ġ"$ packageName / a . jpg "). absolute Path ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġq Wrapper Ġ= ĠQ Wrapper (" a . jpg ", Ġ"${ Environment . DIRECTORY _ DC IM }/ $ packageName ", Ġdownload Type Ġ= ĠPublic Directory Type . PI CTURE S ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Progress Change Ġ= Ġ{ Ġe Print Ġ{ Ġ" progress : Ġ$ it " Ġ} Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Download Finished Ġ= Ġ{ Ġtoast (" download Ġfinished ") Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Download Failed Ġ= Ġ{ Ġtoast (" download Ġfailed ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest By Http () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Request Job ?. cancel () ĊĠĠĠĠĠĠĠ Ġm Request Job Ġ= Ġlaunch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbaseUrl Ġ= Ġ" https :// github . com / k uk y xs " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . request Result Ġ= Ġit . check Text (). render Html (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . request Code Ġ= ĠRequest StatusCode . Suc ceed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Fail Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . request Code Ġ= ĠRequest StatusCode . Error ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest By Ret rofit () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Request Job ?. cancel () ĊĠĠĠĠĠĠĠ Ġm Request Job Ġ= Ġcov Launch ( Dispatch ers . IO , Ġon Run Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcreate Service < ApiService >(). request Repository Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwork On Main Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . request Code Ġ= Ġ( result . errorCode Ġ== Ġ 0 ). yes Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . request Result Ġ= Ġresult . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRequest StatusCode . Suc ceed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. otherwise Ġ{ ĠRequest StatusCode . Error Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwork On IO Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto ps Ġ= Ġcreate Service < ApiService >(). request Top (" ef 6 9 c 9 ea 6 6 2 b 4 ca 4 ac 7 6 8 d 4 f 7 0 b 9 2 1 af ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe Print Ġ{ Ġto ps Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĠonError Ġ= Ġ{ Ġ_, Ġthrowable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe Print Ġ{ Ġthrowable Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . request Code Ġ= ĠRequest StatusCode . Error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch ( Dispatch ers . Main ) Ġ{ Ġlong Toast ( throwable . message Ġ?: Ġ"") Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }