Безопасен ли класс «Globals», содержащий статические переменные в Android?

Может ли кто-нибудь просветить меня о безопасности класса, хранящего глобальные значения в 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 () .

14
задан z00l 12 October 2011 в 22:27
поделиться