Производительность Android: стоимость SharedPreferences - PullRequest
3 голосов
/ 13 июля 2011

Когда мое приложение запускается, я заполняю класс контейнера значениями из своих префиксов шарда.Идея состояла в том, чтобы обработать SharedPreferences и PreferenceManager один раз, так как я предполагаю, что они тяжелые.
Вот пример:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(cont); 
StorageClass.lifespan = Integer.parseInt( prefs.getString("lifespan", "8") );
StorageClass.hiRate = Integer.parseInt( prefs.getString("hiRate", "71") );
//and on and on for all preferences 

Другие действия затем запрашивают эти значения.
Но по мере роста моего приложения основная память становится нехваткой.

Было бы лучше, если бы каждый запросчик сделал экземпляр SharedPreferences и получил желаемое значение?

Спасибо

1 Ответ

6 голосов
/ 13 июля 2011

Один и тот же объект SharedPreferences возвращается каждый раз, когда вы запрашиваете настройки с тем же именем. Если бы это было не так, в каркасе было бы много сложного кода для работы с несколькими SharedPreference объектами, поддерживающими их состояние в синхронизации, когда оно было изменено одним из них.

(Это своего рода идея назвать его "общим" предпочтениями.)

...