2016-06-24 2 views
0

Dans mon application, j'essaie de démarrer plusieurs activités d'application les unes après les autres. Ce sont d'autres applications sur le systèmeAndroid exécute plusieurs intentions de lancement

Par exemple:

startActivity(getPackageManager().getLaunchIntentForPackage(packageInfo.packageName)); 

Si j'appelle startActivity juste pour LETs dire « Application1 », puis l'application va commencer très bien, mais si je l'appelle startActivity deux fois de suite (une fois pour « Applicaiton1 » et encore pour « Application2 ») alors il ne commencera la deuxième startActivity - affiche aucune erreur indiquant que la première startActivity n'a

Répondre

0

affiche aucune erreur indiquant que le premier n'a pas startActivity

C'est parce que le premier startActivity() a réussi.

startActivity() est asynchrone. Il revient immédiatement, bien avant que l'activité demandée ne démarre. Appeler startActivity() deux fois de suite va démarrer ces deux activités, et l'utilisateur finira par voir le second, car ce sera le plus haut sur la pile arrière de la tâche.

Très probablement, la bonne réponse est "ne faites pas ce que vous essayez de faire". Cela étant dit, la seule façon de le faire fonctionne peut-être pour appeler le premier startActivity(), puis attendre que le contrôle vous revienne dans une méthode de cycle de vie future (par exemple, onStart()) pour appeler le second startActivity().

+0

Cela semble correct de voir le haut de la pile, ce que je vois. Cependant, si j'appuie sur le bouton d'aperçu, la première application n'est pas dans la vue d'ensemble – slugibihl

+0

@GrayShadow: Par défaut, il sera dans la même tâche que votre application et la deuxième application. Par conséquent, par défaut, il n'apparaîtra pas dans l'écran de synthèse. – CommonsWare

+0

Merci pour votre aide jusqu'à présent - y a-t-il un moyen de la faire apparaître dans la vue d'ensemble? – slugibihl