Eu costumava definir um conjunto de constantes relacionadas como Bundle
chaves juntas em uma interface como abaixo:
public interface From{
String LOGIN_SCREEN = "LoginSCreen";
String NOTIFICATION = "Notification";
String WIDGET = "widget";
}
Isso me fornece uma maneira mais agradável de agrupar constantes relacionadas e usá-las fazendo uma importação estática (não implementos). Eu sei que o Android
framework também usa as constantes da mesma maneira Toast.LENTH_LONG
, como View.GONE
,.
No entanto, muitas vezes sinto que Java Enums
fornecem uma maneira muito melhor e poderosa de representar a constante.
Mas há um problema de desempenho no uso do enums
on Android
?
Com um pouco de pesquisa, acabei ficando confuso. Desta questão
"Avoid Enums Onde Você Só Precisa de Ints" removida das dicas de desempenho do Android? Está claro que Google
removeu "Avoid enums" de suas dicas de desempenho, mas de seus documentos oficiais de treinamento. Esteja ciente da seção de sobrecarga de memória diz claramente: "Enums freqüentemente requerem mais do que o dobro de memória que constantes estáticas. Você deve evitar estritamente o uso de enums no Android. " Isso ainda é válido? (Digamos nas Java
versões posteriores à 1.6)
Mais uma questão que eu observei é enviar enums
através intents
usando Bundle
devo enviá-los por serialização (ou seja putSerializable()
, que eu acho que uma operação cara em comparação com primitivo putString()
método, eventhoughenums
fornece-lo gratuitamente).
Alguém pode esclarecer qual é a melhor maneira de representar o mesmo em Android
? Devo estritamente evitar o uso enums
de Android
?
Enum.ordinal()
.