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" ?

Était-ce utile?

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é.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top