J'ai lu dans la documentation d'Android qu'en définissant la propriété launchMode de mon activité sur singleTop OU en ajoutant la balise FLAG_ACTIVITY_SINGLE_TOP
drapeau à mon intention, que l'appel startActivity(intent)
réutiliserait une seule instance de l'activité et me donnerait l'intention dans la onNewIntent
rappel. J'ai fait ces deux choses, et onNewIntent
jamais de feu et onCreate
fait feu à chaque fois. Les documents disent aussi que this.getIntent()
renvoie l'intention qui a été transmise à l'activité lors de sa création. Dans onCreate
J'appelle getIntent
et j'en reçois un nouveau à chaque fois (je crée l'objet intentionnel dans une autre activité et j'y ajoute un extra... cet extra devrait être le même à chaque fois s'il me renvoie le même objet intentionnel). Tout cela me porte à croire que mon activité ne se comporte pas comme un "sommet unique", et je ne comprends pas pourquoi.
Pour ajouter un peu de contexte au cas où je manquerais simplement une étape nécessaire, voici ma déclaration d'activité dans le manifeste et le code que j'utilise pour lancer l'activité. L'activité elle-même ne fait rien de particulier à ce sujet :
dans AndroidManifest.xml :
<activity
android:name=".ArtistActivity"
android:label="Artist"
android:launchMode="singleTop">
</activity>
dans mon activité d'appel :
Intent i = new Intent();
i.putExtra(EXTRA_KEY_ARTIST, id);
i.setClass(this, ArtistActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
2 votes
Regardez ce diaporama. Il explique très bien launchMode : slideshare.net/RanNachmany/