package Ġio . github . aos a 4 0 5 4 . pip observer Ċ Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . lifecycle . Lifecycle Observer Ċ import Ġandroidx . lifecycle . On Lifecycle Event Ċ Ċ abstract Ġclass ĠPicture In Picture Lifecycle Observer ( ĊĠĠĠ Ġactivity : ĠFragment Activity Ċ ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠActivity . isIn Picture In Picture Mode Ġchanges Ġsoon Ġafter Ġtransform ing Ġthe Ġwindow , ĊĠĠĠĠ Ġ* Ġtherefore Ġit Ġis Ġimpossible Ġto Ġdistinguish Ġeither Ġthe Ġaction Ġis Ġto Ġdismiss Ġor Ġto Ġexpand . ĊĠĠĠĠ Ġ* Ġthis Ġparam Ġis Ġused Ġfor Ġdistinguish Ġthat Ġand Ġcall Ġeither Ġon Return From Picture In Picture Ġor ĠonClose Picture In Picture Window ĊĠĠĠĠ Ġ* Ġ@ see Ġremove Task After Dismiss ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġon Back To FullScreen Mode ĊĠĠĠĠ Ġ* Ġ@ see Ġon Dismiss Picture In Picture Window ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġaugment ed IsIn Picture In Picture Mode Ġ= Ġfalse ĊĊĠĠĠ Ġprotected Ġvar Ġon Another Task Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNorm ally , Ġwhen Ġuser Ġdrag Ġdown Ġpip Ġwindow Ġor Ġtap Ġclose Ġbutton Ġto Ġdismiss Ġpip Ġwindow , ĊĠĠĠĠ Ġ* Ġonly Ġon Stop Ġis Ġcalled Ġand Ġthe Ġtask Ġon Ġwhich Ġpip Ġactivity Ġis Ġsurv ives . ĊĠĠĠĠ Ġ* Ġif Ġremove Task After Dismiss Ġis Ġset Ġas Ġtrue , Ġafter Ġsome Ġactions Ġto Ġdismiss Ġpip Ġwindow , Ġactivity . finish And Remove Task () Ġis Ġcalled . ĊĠĠĠĠ Ġ* Ġif Ġset Ġas Ġfalse Ġonly Ġon Stop Ġis Ġcalled Ġas Ġsame Ġas Ġdefault ĊĠĠĠĠ Ġ* Ġ@ see Ġremove Task After Dismiss ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġabstract Ġval Ġremove Task After Dismiss : ĠBoolean ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoriginal Task Ġ= Ġactivity . taskId ĊĠĠĠĠĠĠĠ Ġactivity . lifecycle . add Observer ( object Ġ: ĠLifecycle Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ RE SU ME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( augment ed IsIn Picture In Picture Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Back To FullScreen Mode () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaugment ed IsIn Picture In Picture Mode Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ PAUSE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity . isIn Picture In Picture Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaugment ed IsIn Picture In Picture Mode Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( original Task Ġ!= Ġactivity . taskId ) Ġon Another Task Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ STOP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( augment ed IsIn Picture In Picture Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Dismiss Picture In Picture Window () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaugment ed IsIn Picture In Picture Mode Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( remove Task After Dismiss Ġ&& Ġon Another Task ) Ġactivity . finish And Remove Task () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ DESTROY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . lifecycle . remove Observer ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġon Back To FullScreen Mode () ĊĠĠĠ Ġabstract Ġfun Ġon Dismiss Picture In Picture Window () Ċ }