In Android, se si desidera cancellare lo stack corrente Activity
e avviare un nuovo Activity
(ad esempio, disconnettendosi dall'app e avviando un log in Activity
), sembrano esserci due approcci.Activity.finishAffinity() vs Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
Ci sono vantaggi a uno rispetto all'altro se il livello API di destinazione è superiore a 16?
1) Fine Affinità
Chiamata finishAffinity()
da un'attività. Activity.finishAffinity
2) Flags intento
Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
L'approccio finishAffinity()
è adatto per> = API 16.
L'approccio Intent
flag è adatta per> = API 11.
Per essere chiari, allo scopo di cancellare lo stack Activity
corrente, entrambi gli approcci sembrano funzionare allo stesso modo. La mia domanda è: ci sono problemi con le persone che hanno vissuto e, quindi, c'è qualche ragione per scegliere l'una rispetto all'altra?
Il ritardo, o sfarfallio, di cui si parla inizialmente è quello che mi ha fatto porre la domanda finishAffinity(). IIRC, alcuni dispositivi Samsung in particolare avevano uno sfarfallio molto pronunciato quando si utilizza finishAffinity() ma non ho più i dispositivi da testare. –
In questo caso era la versione intent che aveva lo sfarfallio come da video. – brindy
In realtà, non sono sicuro di chiamarlo uno sfarfallio (basato sul video). C'è qualcosa di decisamente diverso in ciò che accade visivamente però. finishAffinity sembra che appaia in cima, la versione intent sembra aver "finito" rivelando l'altro in cima allo stack. – brindy