Ich habe eine Reihe verwandter Konstanten wie Bundle
Schlüssel zusammen in einer Schnittstelle wie der folgenden definiert:
public interface From{
String LOGIN_SCREEN = "LoginSCreen";
String NOTIFICATION = "Notification";
String WIDGET = "widget";
}
Dies bietet mir eine bessere Möglichkeit, verwandte Konstanten zu gruppieren und sie durch einen statischen Import (keine Implementierungen) zu verwenden. Ich weiß, dass Android
Framework die Konstanten auch auf die gleiche Weise verwendet wie Toast.LENTH_LONG
, View.GONE
.
Ich habe jedoch oft das Gefühl, dass dies Java Enums
eine viel bessere und leistungsfähigere Möglichkeit darstellt, die Konstante darzustellen.
Aber gibt es ein Leistungsproblem bei der Verwendung von enums
on Android
?
Mit ein wenig Recherche geriet ich in Verwirrung. Aus dieser Frage
? „Vermeiden Sie Aufzählungen , wo man nur Ints Need“ von Android Performance - Tipps entfernt ist es klar , dass Google
entfernt ‚Vermeiden Sie Aufzählungen‘ von seiner Leistung Tipps, aber von ihm offizielles Training docs ist Beachten Sie Speicher - Overhead Abschnitt sagt es deutlich: „Aufzählungen benötigen oft mehr als doppelt so viel Speicher wie statische Konstanten. Sie sollten die Verwendung von Enums unter Android unbedingt vermeiden. " Gilt dies immer noch? (Sagen wir in Java
Versionen nach 1.6)
Ein weiteres Problem , dass ich beobachtet wird, ist zu senden enums
über intents
Verwendung Bundle
ich sie durch Serialisierung senden (dh putSerializable()
, dass ich eine teuere Operation denke , im Vergleich zu primitiver putString()
Methode, obwohl enums
bietet es kostenlos).
Kann jemand bitte klären, auf welche Weise er am besten dargestellt werden kann Android
? Sollte ich die Verwendung von enums
on unbedingt vermeiden Android
?
Enum.ordinal()
stattdessen als int übergeben .