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