Раньше я определял набор связанных констант, таких как Bundleключи, вместе в интерфейсе, как показано ниже:
public interface From{
String LOGIN_SCREEN = "LoginSCreen";
String NOTIFICATION = "Notification";
String WIDGET = "widget";
}
Это дает мне более удобный способ сгруппировать связанные константы вместе и использовать их путем статического импорта (не реализует). Я знаю , что Androidсистема также использует константы в точно так же , как Toast.LENTH_LONG, View.GONE.
Однако мне часто кажется, что они Java Enumsпредоставляют гораздо лучший и эффективный способ представления константы.
Но есть проблема Performence в использовании enumsна Android?
Проведя небольшое исследование, я запутался. От этого вопрос
? «Избегайте Перечисления Где Вам только нужен Ints» удален от кончиков производительности Android, стало ясно , что Googleсняли „Избегайте перечисления“ от его советов по повышению эффективности, но от его официальных учебных документов Осознайте накладные памяти раздела ясно говорит: «перечисления часто требует вдвое больше памяти, чем статические константы. Вам следует строго избегать использования перечислений на Android. " Это все еще в силе? (Скажем, в Javaверсиях после 1.6)"
Еще одна проблема, которую я заметил, - это отправка enumsс intentsиспользованием, Bundleя должен отправить их путем сериализации (то есть putSerializable(), что я считаю дорогостоящей операцией по сравнению с примитивным putString()методом, хотя и enumsпредоставляет ее бесплатно).
Может кто-нибудь пояснить, какой из них лучше всего представляет то же самое Android? Должен ли я строго избегать использования enumsна Android?