TLDR: Dalvik não era bom com alocação de memória e Enum
usa mais memória que int
. O Android Lollipop substituiu o Dalvik pelo ART, que não sofre as mesmas limitações. Portanto, essa recomendação não é mais relevante.
A resposta longa:
Uau! 8 anos, 5 respostas e muitos comentários depois, o verdadeiro motivo ainda não foi abordado.
Nos dias pré-pirulito para Android, Dalvik era o processo usado pela VM. Como havia pouca quantidade de memória disponível para os aplicativos usarem durante esse período, a Dalvik apresentava muitas restrições de memória. Para alocação de memória, Dalvik teve que andar pela pilha e encontrar espaço. O heap também seria fragmentado ao longo do tempo. Dalvik não pôde desfragmentar, para alocar com o tempo e, eventualmente, ficar sem espaço.
Evite enums onde você só precisa de ints
vem dos dias de Dalvik porque um Enum
é muito maior que um int
e a alocação de memória era muito cara.
Hoje em dia, Dalvik foi substituído pelo ART. O ART foi lançado no KitKat e é o padrão desde o Lollipop.
O ART foi criado desde o início não para otimizar a memória, mas otimizar o desempenho. Também é otimizado para alocações e cobranças. A razão é que ela tem memória reservada para objetos grandes. Em vez de colocar tudo no mesmo heap e, em seguida, ter que encontrar espaço para objetos grandes entre todos os pequenos, o ART coloca todos os objetos grandes e bitmaps em um heap separado. E então os pequenos objetos vão para a pilha separada. Também pode desfragmentar.
Após a TARV, se você usa o Enum
Android, não se importa e é por isso que a recomendação foi embora agora.
Isto vem de Chet Haase no Google. Eu recomendo encontrar a conversa dele no Google I / O e assistir o vídeo inteiro. Ele contém muitas informações úteis e informações sobre o Android.