package Ġcom . town wang . y ao hu o Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġcom . bump tech . glide . request . target . View Target Ċ import Ġcom . sc wang . smart . refresh . footer . Class ics Footer Ċ import Ġcom . sc wang . smart . refresh . layout . Smart Refresh Layout Ċ import Ġcom . tencent . bug ly . Bug ly Ċ import Ġcom . tencent . bug ly . beta . Beta Ċ import Ġcom . tencent . bug ly . crash report . Bug ly Log Ċ import Ġcom . tencent . bug ly . crash report . Crash Report Ċ import Ġcom . tencent . bug ly . crash report . Crash Report . User Strategy Ċ import Ġcom . town wang . y ao hu o . common . config Ċ import Ġcom . town wang . y ao hu o . common . signature Hash Ċ import Ġcom . town wang . y ao hu o . di . k oin Modules Ċ import Ġcom . town wang . y ao hu o . ui . weight . header . T aur us Header Ċ import Ġorg . k oin . android . ext . k oin . android Context Ċ import Ġorg . k oin . android . ext . k oin . android Logger Ċ import Ġorg . k oin . core . context . start K oin Ċ import Ġorg . k oin . core . logger . Level Ċ import Ġjava . util .* ĊĊ Ċ class ĠY ao Application Ġ: ĠApplication () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġapplication : ĠApplication ? Ġ= Ġnull ĊĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ç»´æĬ¤ Activity ĠçļĦ list ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm Activ ates Ġ= ĠCollections ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. synchronized List ( LinkedList < Activity >()) ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetContext (): ĠContext Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġapplication !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĠĠĠĠĠĠĠ Ġapplication Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġstart K oin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Context ( this @ Y ao Application ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Logger ( Level . INFO ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodules ( k oin Modules ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinit App () ĊĠĠĠĠĠĠĠ Ġinit Bug Fly () ĊĠĠĠĠĠĠĠ Ġregister Activity Listener () ĊĠĠĠĠĠĠĠ ĠView Target . setTag Id ( R . id . glide Index Tag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" PackageManager Get Signatures ") ĊĠĠĠ Ġprivate Ġfun Ġinit App () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . P ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Manager . get Package Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Manager . GET _ SIGN ING _ CER TIF IC ATES ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). signing Info . apk Contents Sign ers . first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Manager . get Package Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Manager . GET _ SIGNATURE S ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). signatures . first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġa . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( signature Hash . contains ( d . to Long ()). not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig ( Build Config . APP _ IS _ CR ACK ," - 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠPackage Manager . Name NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġinit Bug Fly () Ġ{ ĊĠĠĠĠĠĠĠ ĠBeta . auto Init Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠBeta . auto Check Upgrade Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠBeta . upgrade Check Period Ġ= Ġ 6 0 Ġ* Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġstrategy Ġ= ĠUser Strategy ( application Context ) ĊĠĠĠĠĠĠĠ Ġstrategy . app Channel Ġ= ĠBuild Config . FL AV OR ĊĠĠĠĠĠĠĠ Ġstrategy . app Version Ġ= ĠBuild Config . VERSION _ NAME ĊĠĠĠĠĠĠĠ Ġstrategy . app PackageName Ġ= ĠBuild Config . APPLICATION _ ID ĊĠĠĠĠĠĠĠ Ġstrategy . app Report Delay Ġ= Ġ 2 0 0 0 0 ĊĠĠĠĠĠĠĠ ĠBug ly . init ( application Context , Ġ" 5 6 bf 5 0 7 1 4 6 ", Ġfalse ) ĊĠĠĠĠĠĠĠ ĠCrash Report . setIs Development Device ( application Context , ĠBuild Config . DEBUG ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity Ġ ä½ľçĶ¨ è¯´æĺİ Ġ ï¼ļ æ·»åĬł ä¸Ģä¸ª activity åĪ° ç®¡çĲĨ éĩĮ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġpush Activity ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Activ ates . add ( activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity Ġ ä½ľçĶ¨ è¯´æĺİ Ġ ï¼ļ åĪłéĻ¤ ä¸Ģä¸ª activity åľ¨ ç®¡çĲĨ éĩĮ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġpop Activity ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Activ ates . remove ( activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġget Ġcurrent ĠActivity Ġèİ·åıĸ å½ĵåīį Activity ï¼Ī æłĪ ä¸Ń æľĢåĲİ ä¸Ģä¸ª åİĭ åħ¥ çļĦ ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcurrent Activity (): ĠActivity ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( m Activ ates . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġm Activ ates [ m Activ ates . size Ġ- Ġ 1 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĵæĿŁ å½ĵåīį Activity ï¼Ī æłĪ ä¸Ń æľĢåĲİ ä¸Ģä¸ª åİĭ åħ¥ çļĦ ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfinish Current Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Activ ates . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġm Activ ates [ m Activ ates . size Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠ Ġfinish Activity ( activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĵæĿŁ æĮĩå®ļçļĦ Activity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfinish Activity ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Activ ates . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activ ates . remove ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . finish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĵæĿŁ æĮĩå®ļ ç±» åĲį çļĦ Activity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfinish Activity ( cls : ĠClass <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Activ ates . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( activity Ġin Ġm Activ ates ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity . java Class Ġ== Ġcls ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish Activity ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĮīçħ§ æĮĩå®ļ ç±» åĲį æī¾åĪ° activity ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcls ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfind Activity ( cls : ĠClass < *> ): ĠActivity ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtarget Activity : ĠActivity ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġfor Ġ( activity Ġin Ġm Activ ates ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity . java Class Ġ== Ġcls ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Activity Ġ= Ġactivity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget Activity ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġ ä½ľçĶ¨ è¯´æĺİ Ġ ï¼ļ èİ·åıĸ å½ĵåīį æľĢ é¡¶ éĥ¨ activity çļĦ å®ŀä¾ĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Top Activity (): ĠActivity ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġm Base Activity : ĠActivity ? ĊĠĠĠĠĠĠĠ Ġsynchronized ( m Activ ates ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize : ĠInt Ġ= Ġm Activ ates . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( size Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Base Activity Ġ= Ġm Activ ates [ size ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġm Base Activity ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġ ä½ľçĶ¨ è¯´æĺİ Ġ ï¼ļ èİ·åıĸ å½ĵåīį æľĢ é¡¶ éĥ¨ çļĦ ac it ivity Ġ åĲįåŃĹ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Top Activity Name (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġm Base Activity : ĠActivity ? ĊĠĠĠĠĠĠĠ Ġsynchronized ( m Activ ates ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize : ĠInt Ġ= Ġm Activ ates . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( size Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Base Activity Ġ= Ġm Activ ates [ size ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġm Base Activity ?. java Class ?. name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĵæĿŁ æīĢæľī Activity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġfinish All Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( activity Ġin Ġm Activ ates ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . finish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Activ ates . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ éĢĢåĩº åºĶçĶ¨ç¨ĭåºı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġapp Exit () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBug ly Log . i ( Build Config . FL AV OR , Ġ" app Ġ== Ġexit ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish All Activity () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBug ly Log . e ( Build Config . FL AV OR , Ġ" app Ġ== Ġexit ${ e . message }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Activity Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġregister Activity Lifecycle Callbacks ( object Ġ: ĠActivity Lifecycle Callbacks Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Created ( activity : ĠActivity , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpush Activity ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Started ( activity : ĠActivity ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Res umed ( activity : ĠActivity ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Paused ( activity : ĠActivity ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Stopped ( activity : ĠActivity ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Save InstanceState ( activity : ĠActivity , Ġout State : ĠBundle ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Destroyed ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Activ ates . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Activ ates . contains ( activity )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop Activity ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠSmart Refresh Layout . setDefault Refresh Initializer Ġ{ Ġ_, Ġlayout Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout . set Enable Auto Load More ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout . set Enable Over Scroll Drag ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout . set Enable Over Scroll Bo unce ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout . set Enable Load More When Content Not Full ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout . set Enable Scroll Content When Ref reshed ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout . set Primary Colors Id ( R . color . color Primary , Ġandroid . R . color . white ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSmart Refresh Layout . setDefault Refresh Header Creator Ġ{ Ġcontext , Ġlayout Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout . set Enable Refresh ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout . auto Refresh () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout . set Enable Header Translation Content ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT aur us Header ( context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSmart Refresh Layout . setDefault Refresh Footer Creator Ġ{ Ġcontext , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass ics Footer ( context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }