Android - использование Singleton для доступа к настройкам удержания приложения и Context - PullRequest
1 голос
/ 28 февраля 2012

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

Проблема в том, что мне нужен контекст Activity для использования SharedPreferences. Могу ли я передать это в Синглтон? Я читал об утечках памяти и опасаюсь этого.

Или я полностью лаю не на том дереве и есть ли лучший способ поделиться настройками приложения между действиями?

Ответы [ 2 ]

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

Вы можете попробовать:

public class SomeApplication extends Application {


    private static SomeApplication _instance;

    public SomeApplication() {
       super();
    }

    public static SomeApplication getInstance() {
       return _instance;
    }

    @Override
    public void onCreate() {
        super.onCreate();  
        _instance = this;
    }

    public SharedPreferences getPreferences() {
         return getApplicationContext().getSharedPreferences( SOME_PREFS_KEY, Context.MODE_PRIVATE );
    }

}

    .....
       SharedPreferences prefs =  SomeApplication.getInstance().getPreferences();
    ..... 

Не забудьте про manifest.xml

    <application android:label="@string/app_name" android:icon="@drawable/icon"
             android:name="SomeApplication"
       >
2 голосов
/ 28 февраля 2012

Что касается обмена информацией между действиями, у вас есть два варианта:

  1. Класс Singleton, как вы и предлагали.
  2. Расширьте класс Application и сохраните там свою информацию (что, насколько мне известно, является своего рода усиленным синглтоном).

Лично я использую Singletons для управления информацией в области приложенияв моих приложениях для Android.Я хотел бы рассказать вам о плюсах и минусах обоих подходов, но это широко обсуждается в Интернете;) Этот вопрос ответил на все мои вопросы, когда я начал заниматься программированием под Android и пытался выяснить,как делиться информацией в моем приложении наиболее разумным способом.

У меня лично никогда не было проблем с передачей моего Context синглетонам, чтобы они могли выполнять работу, связанную с Shared Preferences.Я полагаю, вам просто нужно быть осторожным с тем, что вы делаете, как со всем, что вы действительно кодируете.

...