Статические переменные в Monodroid - PullRequest
1 голос
/ 31 декабря 2011

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

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

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

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

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

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

Спасибо

Адриан

1 Ответ

2 голосов
/ 31 декабря 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...