Apri il pulsante App Android non ritorna all'attività corrente già aperta
-
21-12-2019 - |
Domanda
Vedere Aggiornamento 2 per il problema corrente riguardante la modalità di lancio delle attività
Sto sviluppando un'app Android. Ora ho il problema che una volta apporto una nuova attività (che non è l'attività con android.intent.action.MAIN
e android.intent.category.LAUNCHER
Gode) nell'app, quindi premere il pulsante Home, quindi premere l'icona dell'app, l'app non mi naviga al nuovo Attività che ho già aperto (e mostrato nell'elenco delle app recenti). Invece, apri una nuova attività principale.
Cosa devo fare per cambiare questo comportamento?
===================================================
Aggiornamento
Codice per Avvia attività Altro dall'attività principale
startActivity(new Intent(MainActivity.this, LocalActivity.class));
.
AndroidManifest.xml
<activity
android:name=".MainActivity"
android:theme="@style/AppDrawTheme"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".LocalActivity"
android:launchMode="singleInstance"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:screenOrientation="portrait">
</activity>
.
===================================================
Aggiorna 2
risolto il problema per modificare
android:launchMode="singleInstance"
.
per
android:launchMode="singleTask"
Anche se non capisco perché singleInstance
sarebbe un problema.
Come dovrei capire cosa scrivere Google sul documento Android "tranne che il sistema non avvia altre attività nel compito che tiene l'istanza" ?
Soluzione
La maggior parte probabilmente stai impostando flag Intent
che causano questo quando si chiama startActivity()
o si utilizzano le proprietà dell'attività in AndroidManifest.xml
che causano questo. Dovrei vedere il tuo manifesto o il tuo codice per indicare dove è esattamente il problema.
Aggiornato
Google Documenti dice anche:
.L'attività è sempre il singolo e unico membro del suo compito.
Dovresti passare attraverso Questa pagina e leggi attentamente su compiti e attività.
Fondamentalmente, quando si avvia la tua attività principale è stata creata all'interno del nuovo compito. Le attività successive sono posizionate nello stesso compito (nella pila). Ora, la parte cruciale, Android non ripristina solo attività singola, ma intera attività. Questo è predefinito.
Nel caso in cui si utilizzi singleInstance
ogni attività ha attività propria e quando si avvia nuovamente l'app (dopo il pulsante Home) Android ripristinare l'attività con l'attività di root, non quella con l'ultima attività vista. Stai molto attento quando cambi launchMode, se non è chiaro come funziona, dovresti probabilmente trovarlo prima, altrimenti potresti avere più sorprese in futuro.
Spero che sia chiaro ora per te, se non per favore leggi Documentazione collegata.
Altri suggerimenti
Dovresti usare onPause()
e onResume()
nella tua attività.