Может ли кто-нибудь рассказать мне о безопасности класса с глобальными ценностями в Android?
Вот краткий пример того, что я имею в виду:
public class Globals {
public static int someVariable = 0;
public static User currentUser = null;
public static Handler onLogin = null;
}
Затем где-то в Activity
я делаю следующее:
Globals.someVariable = 42;
Globals.currentUser = new User("John", "Doe");
Я должен положиться на Globals.currentUser
в нескольких местах моего приложения, как только пользователь войдет в систему, но я не уверен, должен ли я это делать, а также могу ли я использовать такой обработчик.
Я везде читал, что Android-приложение может быть убито в любое время. Значит ли это, что оно полностью или частично или полностью уничтожено, и, таким образом, убивает только мой класс Globals
?
Или есть какой-либо другой способ безопасного хранения глобально доступных данных, без записи каждого изменения члена в базу данных (фактически мой класс User
на немного более сложный, чем в этом пример.; -)
Спасибо за ваши усилия!
Редактировать: Хорошо, вот что я наконец-то сделал:
public class MyApp extends Application {
private static MyApp _instance;
public MyApp() {
super();
_instance = this;
}
public static MyApp getContext() {
return _instance;
}
....
private User _user = null;
public User getUser() {
if (_user == null) _user = new User();
return _user;
}
}
Затем измените AndroidManifest.xml
и добавьте android:name=".MyApp"
к вашему узлу application
, чтобы сообщить приложению использовать ваш подкласс.
Пока все работает нормально, и я легко могу получить доступ к текущему Context
(например, в SQLiteOpenHelper
), позвонив по номеру MyApp.getContext()
.