2010-01-23 20 views
7

J'ai une application avec plusieurs activités. Mon activité a les paramètres de filtre Manifest Intent: action.MAIN et category.LAUNCHER. après son chargement, j'appelle l'activité B et finish() A puisque je ne l'utilise plus.Android Exécuter l'application depuis la dernière activité

Après je lance ma demande, aller de l'activité A à B et appuyez sur la maison bouton , quand je RELANCE dans le menu des applications ou de l'application du marché par ex. (Non pas par une pression longue sur le bouton Accueil), il commence de l'activité A et ne pas enregistrer son dernier B. Activité

Je sais pertinemment que cela est possible de relancer une application de sa dernière activité (certaines applications du marché ne supportent il) et Je pense que cela peut être déterminé par les paramètres Manifeste mais je ne sais pas lequel.

Est-ce que quelqu'un sait comment l'implémenter pour que mon application puisse relancer depuis sa dernière activité B?

Merci ayanir

+0

Avez-vous pensé à elle? Si oui, s'il vous plaît partagez avec nous ... –

Répondre

1

Il y a eu un certain nombre de questions très similaires ces derniers temps. C'est une bonne idée de chercher d'abord sur le site pour s'assurer que les questions en double ne sont pas posées. Par exemple, la question ci-dessous indique que ce comportement se produisait parce que le développeur commençait son application en utilisant le débogueur Eclipse. Une autre personne rencontrait ce problème car elle lançait l'application directement à partir d'Eclipse, au lieu de démarrer proprement en appuyant manuellement sur l'icône du lanceur.

Android: keep task's activity stack after restart from HOME

+0

Notez que ce problème a été corrigé dans la version 0.9.6 du plugin ADT pour Eclipse. –

0

donc il y a quelques choses à prendre en compte lors de l'élaboration des Apps dans Android. Et l'une des grandes choses est l'application Lifecyle, si vous n'avez pas encore alors je suggérerais ce video. Qu'est-ce qui se passe, c'est qu'une application peut être tuée et réinitialisée à tout moment et vous devez enregistrer l'état de votre application afin que vous puissiez le restaurer à tout moment. Si vous ouvrez votre App à partir du Lanceur, vous accéderez toujours à l'activité qui démarre l'application, si vous souhaitez passer à l'activité suivante, vous devez stocker cette information, puis accéder à l'Activité dans votre code.
ont également un oeil à cette documentation sur SavingPersistentState

5

Bien que je sais que c'est une vieille question, je luttais avec cette question et ne pouvait pas trouver une réponse sur le SO. Donc, voici ma (très newbie) réponse:

Non, je ne pense pas qu'il soit possible de le faire en jouant avec le manifeste - vous pouvez seulement lancer une activité fixe par application à partir de l'écran d'accueil. Ce que vous pouvez faire, cependant, c'est lancer n'importe quelle activité que vous voulez à partir de ce point de départ, et Android peut le faire assez rapidement pour que vous ne voyiez jamais le premier.

Bien que cela ressemble beaucoup à un hack, je mis en œuvre ce routage dans la méthode de l'activité de départ onResume() et utilisé sharedPreferences de garder une trace dont l'activité pour lancer:

final Class<? extends Activity> activityClass; 
    SharedPreferences prefs = getSharedPreferences("sharedPrefs", MODE_PRIVATE); 
    int activityID = prefs.getInt("whichActivity", -1); 
    if (activityID == Constants.ACTIVITY_ID_MAINSCREEN) { 
     activityClass = MainScreen.class; 
    } else { 
     activityClass = null; return; 
    } 
    Intent newActivity = new Intent(this, activityClass); 
    this.startActivity(newActivity);