Spero che qualcuno possa aiutarmi a capire, se non una soluzione, almeno una spiegazione per un comportamento.
Il problema:
Su alcuni dispositivi, premendo l'icona del programma di avvio si ripristina l'attività corrente, in altri si avvia l'attivazione iniziale del lancio (riavvio effettivo dell'app). Perché succede?
Il dettaglio:
Quando si preme l'icona di avvio, l'app si avvia normalmente, ovvero, presumo, viene avviato un Intento con il nome del primo utente Activity
con l'azione android.intent.action.MAIN
e la categoria android.intent.category.LAUNCHER
. Questo non può essere sempre il caso:
Sulla maggior parte dei dispositivi, se si preme l'icona di avvio dopo che l'app è già in esecuzione, viene ripristinata l'attività attualmente in esecuzione in quel processo ( NON l'iniziale Activity
). Riprende come se l'avessi selezionato da "Attività recenti" nel menu OS. Questo è il comportamento che desidero su tutti i dispositivi.
Tuttavia, su altri dispositivi selezionati si verifica un comportamento diverso:
Sul Motorola Xoom, quando si preme l'icona di avvio, l'app avvia sempre l' avvio iniziale
Activity
indipendentemente da ciò che è attualmente in esecuzione. Presumo che le icone di avvio avviino sempre l'intento "LANCIO".Sul Samsung Tab 2, quando premi l'icona di avvio, se hai appena installato l'app, avvierà sempre l'iniziale
Activity
(uguale a Xoom) - tuttavia, dopo aver riavviato il dispositivo dopo l'installazione, l'icona di avvio sarà invece riprendi l'app. Presumo che questi dispositivi aggiungano "app installate" in una tabella di ricerca all'avvio del dispositivo che consenta alle icone di avvio di riprendere correttamente le attività in esecuzione?
Ho letto molte risposte che sembrano simili al mio problema, ma semplicemente l'aggiunta android:alwaysRetainTaskState="true"
o l'utilizzo launchMode="singleTop"
di Activity
non sono la risposta.
Modificare:
Dopo il lancio più recente di questa app, scopriamo che questo comportamento ha iniziato a manifestarsi su tutti i dispositivi dopo il primo riavvio. Il che mi sembra folle ma guardando attraverso il processo di riavvio, non riesco davvero a trovare cosa non va.
finish()
nei casi in cui ricomincia il primo Activity
invece di riprenderli.