J'avais l'habitude de définir un ensemble de constantes liées comme des Bundle
clés ensemble dans une interface comme ci-dessous:
public interface From{
String LOGIN_SCREEN = "LoginSCreen";
String NOTIFICATION = "Notification";
String WIDGET = "widget";
}
Cela me fournit un moyen plus agréable de regrouper les constantes associées et de les utiliser en effectuant une importation statique (pas des implémentations). Je sais que le Android
cadre utilise aussi les constantes de même que Toast.LENTH_LONG
, View.GONE
.
Cependant, je pense souvent que le Java Enums
fournit un moyen bien meilleur et puissant de représenter la constante.
Mais est - il un problème de performence à utiliser enums
sur Android
?
Avec un peu de recherche, j'ai fini dans la confusion. De cette question
? « Évitez les énumérations où vous avez besoin Ints » retirés des conseils de performance Android il est clair que Google
a supprimé « Évitez énumérations » de ses conseils de performance, mais à partir de son docs de formation officiels Soyez au courant des frais généraux mémoire section , il dit clairement: « énumérations nécessitent souvent plus de deux fois plus de mémoire que les constantes statiques. Vous devez strictement éviter d'utiliser les énumérations sur Android. " Est-ce que cela est toujours valable? (Par exemple, dans les Java
versions après 1.6)
Un autre problème que j'ai observé est de les envoyer enums
en intents
utilisant Bundle
je devrais les envoyer par sérialisation (c'est putSerializable()
-à- dire que je pense qu'une opération coûteuse par rapport à la putString()
méthode primitive , même si enums
elle la fournit gratuitement).
Quelqu'un peut-il clarifier quelle est la meilleure façon de représenter la même chose Android
? Dois - je éviter strictement l' utilisation enums
sur Android
?