Подтвердить что ты не робот

Каков наилучший способ использования общих настроек между действиями

У меня есть предпочтение пользователя в моем приложении, которое используется различными действиями. Я хотел бы знать, как наилучшим образом использовать эти предпочтения между различными действиями в моем приложении.

У меня есть идея создать общий объект предпочтения из основного действия и оттуда отправлять намерения различным действиям для принятия действий. Будет ли это работать...?

Или просто продолжайте звонить getsharedpreferences() из всех видов деятельности..?

Спасибо.

4b9b3361

Ответ 1

Отправка общих настроек с помощью намерений представляется сложнее. Вы можете обернуть общие настройки с помощью чего-то вроде ниже и вызвать методы непосредственно из ваших действий:

public class Prefs {
    private static String MY_STRING_PREF = "mystringpref";
    private static String MY_INT_PREF = "myintpref";

    private static SharedPreferences getPrefs(Context context) {
        return context.getSharedPreferences("myprefs", 0);
    }

    public static String getMyStringPref(Context context) {
        return getPrefs(context).getString(MY_STRING_PREF, "default");
    }

    public static int getMyIntPref(Context context) {
        return getPrefs(context).getInt(MY_INT_PREF, 42);
    }

    public static void setMyStringPref(Context context, String value) {
        // perform validation etc..
        getPrefs(context).edit().putString(MY_STRING_PREF, value).commit();
    }

    public static void setMyIntPref(Context context, int value) {
        // perform validation etc..
        getPrefs(context).edit().putInt(MY_INT_PREF, value).commit();
    }
}

Ответ 2

Вы можете использовать этот способ и объявлять одинаковые переменные с тем же именем во всех действиях, которые вы хотите использовать.

  public static final String PREFS_NAME = "MyPrefsFile";
  static SharedPreferences settings;
  SharedPreferences.Editor editor;
  int wordCount;

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    settings = getSharedPreferences(PREFS_NAME, 0);
    editor = settings.edit();

    wordCount = settings.getInt("wordCount", 4); 

  }

Здесь первоначально wordCount даст 4; И когда вы редактируете wordCount и хотите снова сохранить

  editor.putInt("wordCount", 6);
  editor.commit();

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

Я не думаю, что передача этого предпочтения в намерении будет работать.

Ответ 3

Конечно, вы можете использовать общие настройки в своих приложениях.

Если у вас более простой тип, чем строка или int, вы можете использовать singleton или расширять класс приложения, который будет доступен для всех действий вашего приложения. = > Нет доступа к диску здесь. Просто хранится в памяти.