package Ġcom . g az man . signals . inv oker Ċ Ċ import Ġandroid . os . Process Ċ import Ġcom . g az man . signals . Unhandled ExceptionHandler Ċ import Ġjava . lang . reflect . Method Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠI ly a ĠG az man Ġon Ġ 3 / 1 8 / 2 0 1 6 . Ċ Ġ*/ Ċ class ĠBase Invoker Ġ: ĠRunnable Ġ{ ĊĠĠĠ Ġvar Ġmethod : ĠMethod ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġargs : ĠArray < Any ?> ? ĊĠĠĠ Ġvar Ġlistener : ĠAny ? Ġ= Ġnull ĊĊĠĠĠ Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġargs Ġ= Ġempty Array () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( method : ĠMethod ?, Ġargs : ĠArray < Any ?> ?, Ġlistener : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . method Ġ= Ġmethod ĊĠĠĠĠĠĠĠ Ġthis . args Ġ= Ġargs ĊĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! method !!. is Accessible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod !!. is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( args Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod !!. invoke ( listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod !!. invoke ( listener , Ġ* args Ġas ĠArray < Any ?> ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Unhandled ExceptionHandler . callback Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println (" Unhandled ĠException , Ġconsider Ġproviding ĠUnhandled ExceptionHandler . callback ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcess . kill Process ( Process . my Pid ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignore : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUnhandled ExceptionHandler . callback !!. on Application Error ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }