2011-05-20 1 views
4

Dans mon application, je dois appeler le code chaque fois que l'application se ferme (pauses), puis réexécuter le code lorsque l'application redémarre (reprend). Par exemple, j'appelle un service Web qui synchronise les données chaque fois que l'application démarre ou se termine. C'est facile dans iOS en raison de la reprise de l'application centrale et des méthodes de suspension.Exécuter le code lorsque l'application Android démarre et existe

Je comprends le OnPause et OnResume dans l'activité, cependant, y at-il un moyen central de gérer cela? L'utilisateur pourrait quitter l'application sur Activity3 et revenir plus tard, ou être dans un autre écran, etc. Je détesterais avoir le même code dans OnPause et OnResume de chaque activité pour gérer les routines de code de démarrage et d'arrêt de l'application.

Des suggestions?

Merci.

+0

Vous n'avez pas besoin de cela. Vous ne le feriez pas dans une application Web, par exemple, car il n'y a pas de concept dans une application Web de «l'application se ferme» ou «l'application redémarre». Une application Android ressemble beaucoup à une application Web à cet égard. Les activités sont conçues pour aller et venir, chacune fonctionnant en grande partie indépendamment des autres, tout comme les pages Web d'une application Web. – CommonsWare

Répondre

3

Vous pouvez créer une activité commune qui gère simplement onResume() et onPause() d'une certaine manière, puis en faisant en sorte que chaque activité s'étende directement à partir de celle-ci au lieu de Activity.

+0

Ce concept est bon sauf que onResume s'exécuterait à chaque reprise d'activité, donc je ne pouvais pas "synchroniser au démarrage" une fois par utilisation de l'application. Je ne veux pas exécuter ce code chaque fois qu'une activité est reprise. Je devrais peut-être supprimer cette fonctionnalité car elle ne se prête pas bien à l'application Android comme si elle fonctionnait sur l'application iPhone. – Neal

+0

Eh bien, alors mettez le code "sync on start" sur la première activité, vous appelez de toute façon super.onResume() et là, le code commun est exécuté. Seul le comportement commun doit être mis là, vous pouvez placer des actions particulières sur n'importe quelle sous-classe. – ferostar

1

Je considérerais sous-classer Activty, que chacune de vos activités étende cela et fasse juste ce dont vous avez besoin quand l'un d'entre eux fait une pause ou reprend.

Vous pouvez utiliser des membres statiques dans une classe Application que votre nouvelle base d'activité utilise pour suivre l'état ou stocker tout ce dont vous avez besoin.

En outre, la classe Application a une méthode onCreate() qui s'exécutera chaque fois que l'application est démarrée. Cependant, il n'y a pas de pause ou de reprise pour l'application.

1

Création d'une activité principale qui est étendue par toutes vos autres activités et remplace l'onPause et l'onResume.

Mais le problème que vous rencontrerez si vous souhaitez étendre une autre classe d'activité, telle qu'une ListActivity.

Une autre approche est de créer une nouvelle classe qui étend l'application et passer outre son onCreate et de créer une méthode statique qui agit comme OnPause et appeler manuellement par chacune de vos activités

+0

Extension de la classe d'application a travaillé pour moi .. Merci Hazeem – sadaf

Questions connexes