Некоторые люди любят называть это фрагментацией, другие называют это выбором, но под любым именем, безусловно, есть много разных телефонов Android. Создание приложений, которые должны работать со всеми из них, - непростая задача. У вас совершенно разные аппаратные конфигурации, которые сильно влияют на производительность, и хотя один apk-файл может работать на каждом из них, по-прежнему существует проблема, связанная с необходимостью бесперебойной работы приложения на недорогих устройствах без ущерба для функций на высоких уровнях. Конечные устройства. Когда вы говорите о приложении, столь же популярном, как Facebook, это может быстро стать кошмаром для людей, занимающихся кодированием.
Facebook продемонстрировал всем на Big Android Meat и приветствовал новое простое решение - компонент Device Year Class.
Разработчики Facebook описывают этот новый программный компонент следующим образом:
Device Year Class - это библиотека Android, которая реализует простой алгоритм, который отображает ОЗУ, ядра ЦП и тактовую частоту устройства на год, в котором эта комбинация спецификаций считалась высокопроизводительной. Это позволяет разработчику легко изменять поведение приложения в зависимости от возможностей аппаратного обеспечения телефона.
Библиотека не изменяет поведение в приложении. Он возвращает значение (выраженное в году), которое хранится в коде для случаев, когда разработчику необходимо изменить способ работы приложения, чтобы адаптировать работу к конкретному типу оборудования. Это означает, что разработчик может написать приложение с причудливой анимацией и переходами, которое будет воспроизводиться так, как задумано, при работе на чем-то вроде Galaxy Note 4, но не использовать приятные на вкус, когда приложение работает на чем-то вроде Moto E. Как вы можете представьте себе, что такое управление в приложении, таком как Facebook, которое установлено на миллионах и миллионах различных телефонов, может и будет способствовать лучшему восприятию почти для всех. И это легко реализовать. Из документации на GitHub:
if (year >= 2013) { // Do advanced animation } else if (year > 2010) { // Do simple animation } else { // Phone too slow, don't do any animations }
Лучше всего то, что библиотека поставляется с открытым исходным кодом по лицензии BSD Software (та же лицензия, которую Google использует для исходного кода Android) и доступна каждому разработчику для бесплатного использования.
Мы знаем, что это не волшебство, и, скорее всего, у большинства разработчиков, работающих над большими проектами, есть какой-то метод обработки различных аппаратных конфигураций. То, что делает годовой класс устройства, - это простое и «элегантное» решение большой проблемы, и любой может его использовать.
Страница устройства класса Year 'GitHub