Échanger des informations entre Activity

En développement Android, pour échanger des informations entre Activity. Lancer l’activity avec “startActivityForResult()” et récupérer la réponse dans “onActivityResult()” est une technique très connue.

Cependant il existe une manière plus simple de procéder pour atteindre le même résultat.

En effet, en implémentant un Singleton par exemple, ou même un objet statique, on peut très simplement partager une valeur dans tout le programme.

Cependant dans le cas de valeur globales ayant des ressources à libérer, ce procédé n’est pas adapté.

Prenons le cas d’une base de données SQlite, courrament utilisé dans les applications Android. Si on garde une instance statique de cette base pour la partager dans toute l’application, on se retrouve tout de suite avec une gestion assez catastrophique de cette ressource. (Qui libère ? Quand ? Qui initialise ?)

La solution se trouve dans la classe Application que l’on peut sous-classer en y ajoutant des méthodes pour rendre cette base de donnée disponible dans toute l’application, comme l’indique le nom de la classe.

Il faut tout d’abord implémenter cette classe puis la préciser dans le Manifest :

    <application
        android:name=".App"

C’est tout. Sérieusement.
Il est alors possible de surcharger onCreate() et onTerminate() pour effectuer les opérations d’ouverture et fermeture de la base, respectivement.

Cette méthode fonctionne aussi très bien pour juste passer des objets entre Activity. En lieu et place de l’utilisation d’Intent, qui est assez fastidieuse à mettre en place.

 

Stephen B

Développeur informatique passionné de numérique et de technologie au sens large du terme.