2010-09-23 33 views
0

Je développe une application Android et j'utilise une bibliothèque que j'ai écrite. Cette bibliothèque a une classe qui contient des champs statiques. L'un d'eux est une clé API. Cette clé est utilisée par d'autres classes de ma bibliothèque pour effectuer des appels sur un service distant.Paramètres statiques non retenus pour les activités

J'initialise la clé API sur mon activité principale une fois lors de sa création et la valeur de savedInstanceState est nulle.

Mon problème réside dans d'autres activités car ils utilisent parfois la clé API correcte lors d'appels avec ma bibliothèque et parfois non. Il semble que la clé API n'a pas été définie.

En particulier, une activité que j'appelle de mon activité de préférences échoue toujours car la clé API n'est pas définie.

Les champs statiques ne sont-ils pas maintenus dans les activités comme ils le sont pour les applications Java normales? Je pensais que pour une instance jvm spécifique, tous les champs statiques sont conservés. La plate-forme Android utilise-t-elle de nouvelles instances jvm pour les nouvelles activités?

+0

Vous devez implémenter ceci avec une sharedPreference au lieu d'une variable globale statique – Falmarri

+0

la bibliothèque est écrite spécifiquement pour Java. Il ne connaît pas la plate-forme sur laquelle il fonctionnera. Voulez-vous dire que les champs statiques sont volatils dans Android? –

Répondre

1

S'il vous plaît lire:?

http://developer.android.com/guide/topics/fundamentals.html#procthread

Votre application est en cours d'exécution dans un processus. Il se peut que le processus doive être supprimé pendant qu'il est en arrière-plan. Votre application doit enregistrer correctement tout état approprié en arrière-plan (via pour ex Activity.onSaveInstanceState()) et/ou reconstruire son état lors d'un redémarrage ultérieur dans un nouveau processus.

+0

je vois ... Je pensais que seule l'activité a été tué pas tout le processus .. Donc je suppose que je vais devoir enregistrer et restaurer mes champs statiques dans toutes les activités ... :( –

0

Êtes-vous accès au champ statique d'une manière directe ou indirecte d'autres activités mess avec la touche Api Si oui, vous devriez synchronized avant d'y accéder

+0

Γειά και σε σένα :) Je suis en train de mettre en place et de faire passer le membre par des méthodes seulement. Et je le mets seulement dans une fois, une fois (ou chaque fois que mon activité principale est créée sans état sauvegardé). Dans tous les autres endroits, je comprends tout simplement. –