Tuesday, October 25, 2011

Статические переменные в Android приложениях

Недавно обнаружил проблему статических переменных в одном приложении под Android. Они просто через какое-то время пропадали.

Как обычно спросил у товарищей на StackOverflow, как бороться с данной проблемой и получил замечательное решение.

Вместо декларации статических переменных в какой-либо Активности (Actiivity) можно сделать это в специально классе, наследующим свойства класс Application, который является синглтоном и уничтожается в самую последнюю очередь.

Например, в файле strings.xml определена версия нашего приложения.

2.0.0

Не хотелось создавать ещё где-нибудь в коде константу версию. Помогло в этой задаче следущее решение:
public class MyApp extends Application
{
private static String appVersion = "";
public static void setAppVersion (String version)
{
appVersion = version;
}
public static String getAppVersion ()
{
return appVersion;
}
}

В самой первой активности происходит инитализация:
public void onCreate(Bundle savedInstanceState)
{
...
String appVersion = this.getString(R.string.version_name);
MyApp.setAppVersion(appVersion);
...
}

И далее с любого места в коде можно получить доступ к версии, даже в обычных Java классах:
...
String version = MyApp.getEasyGOVersion();
...

Это решение мне очень помогло. Надеюсь, поможет и вам.