Каков наилучший способ использования общих настроек между действиями
У меня есть предпочтение пользователя в моем приложении, которое используется различными действиями. Я хотел бы знать, как наилучшим образом использовать эти предпочтения между различными действиями в моем приложении.
У меня есть идея создать общий объект предпочтения из основного действия и оттуда отправлять намерения различным действиям для принятия действий. Будет ли это работать...?
Или просто продолжайте звонить getsharedpreferences()
из всех видов деятельности..?
Спасибо.
Ответы
Ответ 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 или расширять класс приложения, который будет доступен для всех действий вашего приложения.
= > Нет доступа к диску здесь. Просто хранится в памяти.