2011-12-31 4 views
1

Je voudrais savoir s'il est sûr d'utiliser des variables statiques comme un stockage à long terme d'entités commerciales dans une application Mono pour Android.Variables statiques dans Monodroid

Par exemple, si j'ai cette classe:

public class Test{ 
public static int MyStaticVariable{get;set;} 
} 

et dans mon activité principale, j'ai ce code

protected override void OnCreate(Bundle bundle) 
     { 
    ... 
    if (Test.MyStaticVariable){ 
    Test.MyStaticVariable=666; 
    } 
} 

je peux toujours compter sur Test.MyStaticVariable==666 ou sera cette valeur sera éventuellement remise à zéro par l'OS lorsque mon application est hors de portée et que la RAM doit être recyclée?

Merci,

Adrian

Répondre

2

La variable est scope à votre processus, et ne survivra pas à un redémarrage du processus (absent du code supplémentaire de votre part pour sauvegarder/restaurer la variable).

Ce n'est pas différent de Java. :-)

Si vous souhaitez sauvegarder/restaurer la valeur, vous devez sous-classe Android.App.Application et passer outre Application.OnLowMemory() et/ou Application.OnTrimMemory() et enregistrer la valeur de stockage persistant. Vous pouvez ensuite restaurer cette valeur dans Application.OnCreate().

(Il n'y a pas moyen que je connaisse réellement savoir quand le processus sera tué - Application.OnTerminate() est seulement pour émulateurs - mais, espérons- Android appellera les méthodes OnLowMemory()/OnTrimMemory() avant qu'il ne tue le processus ...)