Раніше я визначав набір пов’язаних констант, таких як Bundle
ключі, в інтерфейсі, як показано нижче:
public interface From{
String LOGIN_SCREEN = "LoginSCreen";
String NOTIFICATION = "Notification";
String WIDGET = "widget";
}
Це надає мені кращий спосіб групувати пов'язані константи разом і використовувати їх, роблячи статичний імпорт (не реалізує). Я знаю , що Android
система також використовує константи в точно так же , як Toast.LENTH_LONG
, View.GONE
.
Однак я часто відчуваю, що це Java Enums
набагато кращий та потужніший спосіб представити константу.
Але чи є проблема з ефективністю використання enums
на Android
?
Трохи досліджень я закінчив у розгубленості. З цього питання
"Уникайте перерахувань, де вам потрібні лише входи", вилученого із підказок щодо продуктивності Android? Зрозуміло, що Google
вилучено "Уникати перерахувань" зі своїх підказок щодо продуктивності, але з офіційних навчальних документів Будьте в курсі розділу накладних витрат на пам'ять, в якому чітко сказано: "Перелічення часто вимагають удвічі більше пам'яті, ніж статичні константи. Вам слід суворо уникати використання перерахувань на Android. " Це все ще добре? (Скажімо, у Java
версіях після 1.6)
Ще одне питання, яке я помітив, - це пересилання enums
з intents
використанням, і Bundle
я повинен надсилати їх шляхом серіалізації (тобто putSerializable()
, я вважаю, що дорога операція порівняно з примітивним putString()
методом, хоч і enums
надає її безкоштовно).
Хтось може пояснити, який із них найкраще представляти те саме Android
? Чи слід суворо уникати використання enums
на Android
?