Мое приложение Android хранит 15-20 пар настроек с SharedPreferences, и я использую вспомогательный класс, поэтому мне не нужно создавать новый метод в каждом классе, который должен их извлекать.
Некоторые извлечения начинают занимать> 100 мс, и я не уверен, что мой текущий метод эффективен для производительности, так как он проходит в контексте и каждый раз создает новый объект SharedPreferences.Это случается много раз во время выполнения AsyncTasks приложения.
Вот что я делал:
public class SharedPrefHelper {
static void setDefaults(String key, String value, Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(key, value);
editor.apply();
}
static void setDefaultsInt(String key, int value, Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt(key, value);
editor.apply();
}
//... continued with other variable types and getDefault variants
//.......
}
Будет ли ниже более эффективный способ справиться с этим?
public class SharedPrefHelper {
private static SharedPreferences preferences;
static void init(@NonNull final App app) {
preferences = PreferenceManager.getDefaultSharedPreferences(app);
}
//App is the Application class, init is called in onCreate()
static void setDefaults(String key, String value) {
SharedPreferences.Editor editor = preferences.edit();
editor.putString(key, value);
editor.apply();
}
//... continued with other variable types and getDefault variants
//.......
}
Или есть другие переменные ключевые слова, которые будут лучше (окончательные и т. Д.)?