Question

J'ai deux activités en cours d'exécution: MainActivity et childActivity . Chaque fois que l'utilisateur clique sur le bouton MainActivity , childActivity est lancé. Ce que je veux faire est la suivante:

Lorsque l'activité active est la childActivity et l'utilisateur clique sur le bouton d'accueil Relancez l'application , je veux voir le childActivity < strong> au lieu de MainActivity qui est lancé.

J'ai eu quelques suggestions fonctionnent réellement contournements. J'ai essayé de manipuler onStart, onRestart, onResume, onStop, événements OnDestroy. Mais, ils ne résolvent pas complètement le problème. Il devrait y avoir une façon intelligente là-bas. Merci.

Edit:

Merci pour la réponse, Soonil. Le cas vous avez dit qui se passe lorsque l'activité est appelée à partir de la fenêtre des activités récentes. (La fenêtre ouverte lorsque vous appuyez longuement sur le bouton d'accueil) Cependant; Cela ne se produit lorsque vous l'ouvrez depuis l'écran d'accueil. (Comme l'ouverture du début) Je ne pense pas que mon code a un problème spécifique pour générer cette erreur. Parce que, j'ai créé un projet de test et essayé autonome avant d'envoyer la question et fait face au même problème. Quoi qu'il en soit, voici le code de test:

public class MainActivity extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.setTitle("MainActivity");

        ((Button) findViewById(R.id.btnChildActivity)).setOnClickListener(this);
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        startActivity(new Intent(this, ChildActivity.class));
    }

}

public class ChildActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
        this.setTitle("ChildActivity");

    }
}
Était-ce utile?

La solution

EDIT : trouvé la solution à votre problème aujourd'hui un peu au hasard! Voir cette . Il explique votre problème exactement. La raison pour laquelle je ne pouvais pas reproduire le problème est que je n'ai jamais Eclipse lancer une application directement. J'utilise Eclipse pour installer l'application, puis commencer à moi-même.


Ceci est déjà le comportement par défaut pour les applications Android, pas de trucs spéciaux sont nécessaires pour y parvenir. Je suis surpris de votre demande ne montre pas ce comportement. Chaque application Android maintient une pile d'activité, littéralement une pile LIFO d'activités. Ces activités peuvent encore être regroupées en tâches, mais 99% des applications banales ne jamais besoin de savoir quoi que ce soit sur les tâches dans mon expérience.

Lorsque vous appuyez sur le bouton d'accueil, l'ensemble de la pile d'application est mis en arrière-plan. Alors que dans l'arrière-plan, il peut être tué pour des raisons de mémoire à tout moment, mais si peu de temps écoulé avant qu'il ne soit restauré, il est généralement pas tué et ne pas être recréés. Lorsque vous sélectionnez l'application à nouveau, la pile (ou plus exactement, seul l'élément supérieur de la pile) est restaurée.

Si votre application n'expose ce comportement, je pense qu'il a quelque chose à voir avec la façon dont vous commencez la MainActivity et childActivity et des drapeaux d'intention supplémentaires que vous pouvez utiliser. Toute chance que vous pouvez poster des extraits de code sur la façon dont vous démarrez le MainActivity et childActivity?

Autres conseils

Je suis retourné et testé avec une application similaire, et même si le processus est forcé de mémoire du ChildActivity RECONSTITUTION automatiquement comme le dit Soonil. Voyez-vous cela sur l'émulateur ou sur un périphérique réel?

Si vous exécutez votre application et regarder logcat, vous devriez voir quelque chose comme ce qui suit après le lancement de votre application, puis ouvrez le ChildActivity et cliquez sur Accueil, puis lancez votre activité à nouveau:

Activité de départ: Intention {action = android.intent.action.MAIN catégories = {} android.intent.categroy.LAUNCHER drapeaux = ... = {comp com.yourpackagename.MainActivity}} Lancer proc activité yourpackagename.ChildActivity: pid = x uid = y Gids = {} activité affichée /.ChildActivity

Pouvez-vous poster la sortie de logcat lorsque vous ne voyez pas le comportement que vous attendez?

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