2010-04-22 3 views
4

J'ai la question suivante.Android: Activité de récupération Lorsque j'appuie sur Accueil

J'ai une activité qui montre une barre de progression pendant qu'un service télécharge des données d'une API. Je veux que lorsque j'appuie sur Accueil et relance mon programme l'activité et qui n'est pas la première activité appelée mais qu'elle soit dans la pile a été récupérée afin de continuer à montrer la progression. J'ai lu au sujet du cycle de la vie des activités mais je ne trouve pas une solution claire.

La même chose se produit Si je suis dans l'activité qui montre la barre de progression et que j'appuie sur un bouton qui m'amène à une autre activité, puis-je récupérer l'ancienne activité?

Quelqu'un m'aide?

Merci

Répondre

3

Le problème est que en appuyant sur le bouton d'accueil efface toute la pile d'activité. Cela signifie qu'il n'y a aucune possibilité de revenir à l'activité, il n'est même pas certain que l'activité existe toujours.

Si une progression intéressante pour l'utilisateur est toujours en cours, vous pouvez afficher une icône de barre de notification jusqu'à ce que la progression soit terminée. Je pense que vous pouvez spécifier une intention particulière de cliquer sur la barre de notification et filtrer cette intention avec votre activité. De cette façon, vous reviendrez à l'activité. Mais vous êtes toujours confronté au problème que l'activité est enregistrée et n'a aucune référence au thread d'arrière-plan faisant le travail.

Si votre activité a quitté la pile, sa méthode d'arrivée est appelée. Vous ne devriez pas essayer de réutiliser cette activité plus tard. La meilleure façon est de penser à un moyen de sauvegarder et de restaurer tout l'état de l'activité plus tard. Pour restaurer une référence au thread d'arrière-plan faisant le travail, vous pouvez sous-classer la classe application et enregistrer une référence à la tâche en cours d'exécution dans votre sous-classe.

+0

l'activité existe toujours parce que le service lui envoie des données donc je pense qu'il devrait être possible de le récupérer – xger86x

+0

l'activité existera jusqu'à ce que le service soit terminé et le garbage collector peut nettoyer l'activité. – Janusz

+0

ok, donc pendant que le service est encore en cours, si une relance mon application, puis-je prendre cette instance de l'activité dans la pile? – xger86x