Раніше я визначав набір пов’язаних констант, таких як 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?