2011-12-22 5 views
0

Философски, лучше ли работать с настройками на протяжении всего кода, получать и устанавливать значения, когда пользователь взаимодействует с деятельностью; или лучше работать с полями классов, а затем в некоторых onDestroy(), возможно, установить предпочтения конечным значениям полей класса, которые требуется сохранить.Поля полей и предпочтения

//-- Is this better? 
if (a==preferences.getInt(pref1,default){ 
    preferenceEditor.putInt(pref2,someNumber); 
} 

//-- Or is this? 
if (a==field1){ 
    field2 = someNumber; 
} 
... 
onDestroy(){ 
    preferenceEditor.putInt(pref1,field1); 
    preferenceEditor.putInt(pref2,field2); 
} 

ответ

0

Так, пожалуйста, не «работать с предпочтениями».

Что вы там делаете (в первом примере) - это взаимодействие с глобальной переменной. Никогда не делай этого, если можешь помочь. Это анти-шаблон. Вам не нужны глобальные переменные в вашем коде. Это делает код сложнее понять/сложнее проверить. Вместо этого, всякий раз, когда вы создаете экземпляр класса, читайте ваши глобальные параметры и добавляйте их в поля вашего класса (желательно в конструкторе). Сам класс НЕ должен знать о вашем хранилище предпочтений.

Кроме того, НЕ ИСПОЛЬЗУЙТЕ onDestroy (WTF?). Вот примечание от the reference:

Примечание: не считайте, что этот метод называется местом для сохранения данных!

Вместо этого поместите эту логику в onPause().

+0

спасибо Александру! И спасибо за напоминание о onDestroy(). – aez

0

по соображениям производительности полей должны быть предпочтительнее, чем предпочтения, но это также зависит от того, как часто меняют значения

Смежные вопросы