2016-10-29 3 views
3

То же самое касается других классов, таких как SimpleDateFormat. Java имеет java.text.SimpleDateFormat Android имеет android.icu.text.SimpleDateFormatПочему у Android есть собственный класс DateFormat, если у Java уже есть один?

Что может быть причиной этого? Добавляет ли Android собственный набор функций?

Я обеспокоен тем, что недавно я потратил много времени на то, как люди создали экземпляр класса DateFormat, если он является абстрактным классом. Теперь я понял, что android.text.format.DateFormat - это конкретный класс, который может быть создан в отличие от java.text.DateFormat, который является абстрактным классом.

ответ

1

CU4J - широко используемый набор Java-библиотек с открытым исходным кодом, обеспечивающий поддержку Unicode и глобализации для приложений. Начиная с Android 7.0 (API-уровень 24), Android предоставляет подмножество API-интерфейсов ICU4J для разработчиков приложений для использования в пакете android.icu. Эти API-интерфейсы используют данные локализации, присутствующие на устройстве. В результате вы можете уменьшить площадь вашего APK, не компилируя библиотеки ICU4J в APK; вместо этого вы можете просто обратиться к ним в рамках. (В этом случае вам может потребоваться предоставить несколько версий вашего APK, поэтому пользователи, работающие с версиями Android ниже Android 7.0 (API уровня 24), могут загрузить версию приложения, содержащую библиотеки ICU4J.)

Android предоставляет подмножество API ICU4J через пакет android.icu, а не com.ibm.icu. Рамки Android могут не подвергать API ICU4J различным причинам; например, Android не раскрывает некоторые устаревшие API или те, которые команда ICU еще не объявила стабильной. Поскольку команда ICU отказывается от API в будущем, Android также будет отмечать их как устаревшие, но будет продолжать включать их. (Source)