Как я могу использовать sharedPreferences вне Деятельности? - PullRequest
10 голосов
/ 08 февраля 2012

Я застрял на этой очень простой проблеме в течение нескольких часов, и я не смог найти подходящих решений через Google.

Я пытаюсь использовать класс SharedPreferences на уровне модели моего приложения. В частности, я хочу иметь возможность сохранять или извлекать имя пользователя и соответствующий токен при каждом запуске приложения (если пользователь настраивает приложение для автоматического входа в систему).

Есть ли способ для меня использовать SharedPreferences для этой проблемы, или я вынужден использовать FileInput / Output?

Ответы [ 3 ]

28 голосов
/ 08 февраля 2012

Где вы создаете экземпляр своего класса Model?

Просто передайте контекст или SharedPreferences конструктору:

public class Model {
    private final Context context;
    private final SharedPreferences sharedPrefs;

    public Model(Context context) {
        this.context = context;
        sharedPrefs = context.getSharedPreferences("name", 0);
    }

    private String doSomething(){
        return sharedPrefs.getString("key", "defValue");
    }
}
4 голосов
/ 08 февраля 2012

SharedPreferences вызывается не только из Activity, но из Context (который расширяется Activity), поэтому вы также можете использовать контекст приложения.

0 голосов
/ 08 февраля 2012

Вы можете использовать SharedPredeferences из любого кода, который содержит контекст.Из документации Activity по адресу http://developer.android.com/reference/android/app/Activity.html:

Постоянное состояние активности управляется с помощью метода getPreferences (int), позволяющего извлекать и изменять набор пар имя / значение, связанных с действием.Чтобы использовать предпочтения, которые совместно используются несколькими компонентами приложения (действиями, получателями, услугами, поставщиками), вы можете использовать базовый метод Context.getSharedPreferences () для извлечения объекта предпочтений, хранящегося под определенным именем.(Обратите внимание, что невозможно обмениваться данными настроек между пакетами приложений - для этого вам потребуется поставщик контента.)

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