package Ġcom . hl . arch . mv vm . vm Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . hl . arch . mv vm . api . event . Ui Event Ċ import Ġcom . hl . arch . mv vm . api . event . dismiss Loading Ċ import Ġcom . hl . arch . mv vm . api . event . show Exception Ċ import Ġcom . hl . arch . mv vm . api . event . show Loading Ċ import Ġkotlinx . coroutines . Coroutine ExceptionHandler Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Job Ċ import Ġkotlinx . coroutines . launch Ċ Ċ /** Ċ Ġ* Ġ@ author Ġ Ġ å¼ł ç£ Ĭ Ġ Ġon ĠĠ 2 0 2 1 / 1 1 / 0 6 Ġat Ġ 1 8 : 3 0 Ċ Ġ* ĠEmail : Ġ 9 1 3 3 0 5 1 6 0 @ qq . com Ċ Ġ*/ Ċ open Ġclass ĠLive Data VM Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġval Ġui Event Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠEvent LiveData < Ui Event >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġapi Launch ( ĊĠĠĠĠĠĠĠ Ġneed Loading : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġon Exception : Ġ( Throwable ) Ġ-> ĠBoolean , ĊĠĠĠĠĠĠĠ Ġblock : Ġsuspend ĠCor outine Scope . () Ġ-> ĠUnit ĊĠĠĠ Ġ): ĠJob Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠviewModel Scope . launch ( context Ġ= ĠCor outine ExceptionHandler Ġ{ Ġ_, Ġthrowable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Exception ( throwable )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Coroutine ExceptionHandler ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( need Loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¯·æ±Ĥ å¼Ĥå¸¸ æĹ¶ åħ³éĹŃ å¯¹ è¯Ŀ æ¡Ĩ ï¼Į å±ķç¤º å¼Ĥå¸¸ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Event . dismiss Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Event . show Exception ( throwable ) ĊĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( need Loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¯·æ±Ĥ å¼Ģå§ĭ åīį å±ķç¤º å¯¹ è¯Ŀ æ¡Ĩ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Event . show Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d (" LiveData VM ", Ġ" on Cle ared : Ġ ĠViewModel (${ this . java Class . simple Name }) Ġ è¢« æ¸ħ éĻ¤ ") ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠ Ġ} Ċ }