2011-12-31 3 views
1

Я хотел бы знать, можно ли использовать статические переменные в качестве долгосрочного хранения бизнес-объектов в приложении Mono для Android.Статические переменные в Monodroid

Например, если у меня есть этот класс:

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

и в моей основной деятельности у меня есть этот код

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

я могу всегда рассчитывать на Test.MyStaticVariable==666 или будет это значение в конечном итоге будет сброшен операционной системой, когда мое приложение выходит из сферы действия, и оперативная память должна быть переработана?

Спасибо,

Адриан

ответ

2

Переменная область действия к процессу, а не выживут перезапуск процесса (отсутствует дополнительный код с вашей стороны, чтобы сохранить/восстановить переменную).

Это не отличается от Java. :-)

Если вы хотите сохранить/восстановить значение, вы должны создать подкласс Android.App.Application и переопределить Application.OnLowMemory() и/или Application.OnTrimMemory() и сохранить значение для постоянного хранения. Затем вы можете восстановить это значение в пределах Application.OnCreate().

(Там нет никакого способа я не знаю на самом деле знать, когда процесс будет убит - Application.OnTerminate() только для эмуляторов - но мы надеемся, Android будет вызывать OnLowMemory()/OnTrimMemory() методы, прежде чем он убивает процесс ...)