Может ли кто-нибудь просветить меня о безопасности класса, хранящего глобальные значения в Android?
Вот краткий пример того, что я имею в виду:
public class Globals {
public static int someVariable = 0;
public static User currentUser = null;
public static Handler onLogin = null;
}
Затем где-то в Activity
I сделайте следующее:
Globals.someVariable = 42;
Globals.currentUser = new User("John", "Doe");
Я должен полагаться на Globals.currentUser
в нескольких местах моего приложения, как только пользователь вошел в систему, но я не уверен, должен ли я это делать, а также если Я мог бы использовать такой обработчик.
Я повсюду читал, что приложение Android может быть убито в любой момент, означает ли это, что оно было убито полностью или, может быть, только его часть, убивая, таким образом, только мой класс Globals
?
Или есть какой-то другой другой способ безопасного хранения глобально доступных данных, без записи каждого изменения члена в базу данных (на самом деле мой User
класс немного сложнее, чем в этом примере. -)
Спасибо за ваши усилия!
Edit: Хорошо, вот что я наконец сделал:
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"
в ваше приложение
, чтобы указать приложению использовать ваш подкласс.
Пока все работает нормально, и я могу легко получить доступ к текущему Контексту
(например, в SQLiteOpenHelper
), вызвав MyApp.getContext ()
.