मैं Bundleनीचे दिए गए इंटरफ़ेस की तरह एक साथ संबंधित स्थिरांक की एक कुंजी को परिभाषित करता था :
public interface From{
String LOGIN_SCREEN = "LoginSCreen";
String NOTIFICATION = "Notification";
String WIDGET = "widget";
}
यह मुझे एक साथ संबंधित स्थिरांक के लिए एक अच्छा तरीका प्रदान करता है और एक स्थिर आयात (लागू नहीं) करके उनका उपयोग करता है। मुझे पता है कि Androidफ्रेमवर्क भी उसी तरह से स्थिरांक का उपयोग करता है Toast.LENTH_LONG, जैसे View.GONE।
हालांकि, मुझे अक्सर लगता है कि Java Enumsनिरंतर का प्रतिनिधित्व करने के लिए बहुत बेहतर और शक्तिशाली तरीका प्रदान करता है।
लेकिन क्या उपयोग enumsकरने में एक समस्या है Android?
थोड़े से शोध के साथ मैं भ्रम में समाप्त हो गया। इस प्रश्न से
"एंड्रॉइड से बचने के लिए आपको केवल इनट्स की आवश्यकता कहां है" एंड्रॉइड के प्रदर्शन युक्तियों से हटा दिया गया है; यह स्पष्ट है कि इसके प्रदर्शन सुझावों से "एनम से बचें"Google हटा दिया गया है , लेकिन इससे आधिकारिक प्रशिक्षण डॉक्स मेमोरी ओवरहेड अनुभाग से अवगत रहें यह स्पष्ट रूप से कहता है: "एनम अक्सर स्थैतिक स्थिरांक के रूप में दो बार से अधिक स्मृति की आवश्यकता होती है। आपको एंड्रॉइड पर एनम का उपयोग करने से सख्ती से बचना चाहिए। " क्या यह अभी भी अच्छा है? ( 1.6 के बाद संस्करणों में कहें )Java
एक और मुद्दा यह है कि मैंने देखा भेजने के लिए है enumsभर में intentsउपयोग करते हुए Bundleमैं उन्हें serializing द्वारा भेजना चाहिए (यानी putSerializable(), कि मैं एक महंगी आपरेशन आदिम की तुलना में लगता है कि putString()विधि, eventhough enumsमुक्त करने के लिए यह प्रदान करता है)।
क्या कोई यह स्पष्ट कर सकता है कि कौन सा एक सबसे अच्छा तरीका है Android? क्या मुझे इसका उपयोग enumsकरने से सख्ती से बचना चाहिए Android?
Enum.ordinal()बजाय पास कर सकते हैं ।