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

StackOverflow https://stackoverflow.com/questions/4051875

  •  27-09-2019
  •  | 
  •  

Вопрос

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

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

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

Спасибо.

Это было полезно?

Решение

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

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();
    }
}

Другие советы

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

  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 в каждом виду.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top