Le bouton Ouvrir l'application Android ne revient pas à l'activité actuelle déjà ouverte
-
21-12-2019 - |
Question
Voir la mise à jour 2 pour le problème actuel concernant le mode de lancement d'activité.
Je développe une application Android.Maintenant, j'ai le problème qu'une fois que j'ouvre une nouvelle activité (ce n'est pas l'activité avec android.intent.action.MAIN
et android.intent.category.LAUNCHER
) dans l'application, puis appuyez sur le bouton d'accueil, puis appuyez sur l'icône de l'application, l'application ne me ramène pas à la nouvelle activité que j'ai déjà ouverte (et affichée dans la liste des applications récentes).Au lieu de cela, il ouvre une nouvelle activité MAIN.
Que dois-je faire pour changer ce comportement ?
===================================================
Mise à jour
Code pour l'activité de démarrage Autre de l'activité 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>
===================================================
Mise à jour 2
Je résous le problème par le changementandroid:launchMode="singleInstance"
àandroid:launchMode="singleTask"
Même si je ne comprends pas pourquoi singleInstance
serait un problème.Comment dois-je comprendre ce que Google écrit sur le document Android "sauf que le système ne lance aucune autre activité dans la tâche détenant l'instance" ?
La solution
Très probablement, vous définissez Intent
drapeaux qui provoquent cela lorsque vous appelez startActivity()
ou vous utilisez les propriétés de l'activité dans AndroidManifest.xml
qui cause cela.J'aurais besoin de voir votre manifeste ou votre code pour indiquer exactement où se situe le problème.
Mis à jour
Google Docs dit également :
L'activité est toujours le seul et unique membre de sa tâche.
Tu devrais passer par cette page et lisez attentivement les tâches et les activités.
Fondamentalement, lorsque vous démarrez votre activité principale, elle est créée dans une nouvelle tâche.Les activités suivantes sont placées dans la même tâche (dans la pile).Maintenant, la partie cruciale, Android ne restaure pas seulement une activité unique mais une tâche entière.C'est la valeur par défaut.
Au cas où vous utiliseriez singleInstance
chaque activité a sa propre tâche et lorsque vous redémarrez l'application (après le bouton ACCUEIL), la tâche de restauration Android avec l'activité racine, pas celle avec votre dernière activité vue.Soyez très prudent lorsque vous changez de launchMode, si son fonctionnement n'est pas clair, vous devriez probablement le découvrir en premier, sinon vous pourriez avoir d'autres surprises à l'avenir.
J'espère que c'est clair maintenant pour vous, sinon lisez s'il vous plaît lié Documentation.
Autres conseils
Tu devrais utiliser onPause()
et onResume()
dans votre activité.