sharedPreference из вспомогательного класса - PullRequest
2 голосов
/ 21 марта 2011

У меня есть приложение, в котором я храню информационные данные в sharedPreference Я хочу создать статический класс, который будет хранить данные из sharedPreference (получить и установить), поэтому мне не придется каждый раз вызывать sharedPreference (проблемы с производительностью) Статический вспомогательный класс не имеет ссылки на sharedPreference, есть ли способ получить его, не передавая вызывающую активность в качестве параметра? Может быть, getParent ()? или getContext ()?

Ответы [ 5 ]

4 голосов
/ 21 марта 2011

Я думаю, у вас есть 2 способа сделать это:

  • Вы можете передать Context в параметрах всех ваших статических методов.Затем просто используйте context.getSharedPreferences().

  • Создайте статический метод init, в котором вы будете записывать данные вашего SharedPreferences в статические поля вашего класса.

На мой взгляд, я предпочитаю n ° 1, потому что в n ° 2 вы должны вызывать init и изменять его каждый раз, когда добавляете новые данные в SharedPreferences

1 голос
/ 21 марта 2011

Другой способ - написать свой собственный MyApplication extends Application, где вы можете хранить все, что захотите, в рамках всего приложения и определять любые «статические» методы, которые вы хотите.Вы можете получить к нему доступ через (MyApplication)yourActivityInstance.getApplication().

1 голос
/ 21 марта 2011

Рассмотрите возможность реализации класса Singleton для этой цели.Я не уверен, что у sharedpreference есть проблемы с производительностью.

С помощью одноэлементного класса вы можете хранить объекты по сравнению с общими предпочтениями (строками).

0 голосов
/ 09 июня 2016

Это немного поздно, но вот простой способ, который я создал.

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

Android-SharedPreferences-Helper

Добавьте эту зависимость и начните:

dependencies {
    ...
    ...
    compile(group: 'com.viralypatel.sharedpreferenceshelper', name: 'library', version: '1.1.0', ext: 'aar')
}

Использование

Посетите страницу хранилища для получения подробной информации об использовании расширенных функций.

0 голосов
/ 21 марта 2011

Вам как-то придется передать Context вашему статическому классу, предпочтительно контексту приложения.Я предлагаю вам переопределить метод onCreate() класса Application (вам потребуется его создать подкласс) и установить отсюда контекстную ссылку в вашем статическом классе на getApplicationContext().Таким образом, вы можете получить доступ к средствам доступа с общими предпочтениями из любого другого компонента приложения (Activity, Service, ...) без предоставления Context каждый раз.

...