Есть ли недостаток в использовании библиотеки поддержки Android?

Google позволяет нам предоставлять новейшие функции на старых API-интерфейсах, используя стандартную библиотеку Android. Google поощряет использование этого набора инструментов без упоминания его недостатков.

Есть ли что-то вроде более высокой загрузки ОЗУ или ЦП, медленного рендеринга или simmilar? Почему не каждая новая функция добавлена ​​как часть библиотеки, а не поддерживает две отдельные версии? Почти каждый пример и код реального мира, который я видел, должны были использовать эту библиотеку для поддержки ActionBar и других вещей, поэтому мы можем предположить, что от этого зависит 90%% приложений. Почему бы просто не заставить его?

Ответ 1

Нет никаких препятствий для использования библиотеки поддержки. Более того, как вы правильно отметили, Google рекомендует использовать его в качестве лучших практик: "Включение библиотек поддержки в ваш проект Android считается лучшей практикой для разработчиков приложений, в зависимости от диапазона версий платформы, на которые настроено ваше приложение, и API, которые он использует". (http://developer.android.com/tools/support-library/index.html)

В качестве недостатков мы можем упомянуть лишь несколько незначительных вещей:

  • увеличение размера apk и общее количество методов в проекте (очень незначительное по сравнению с другими функциональными затратами)

  • некоторые конкретные ограничения использования (как правило, они упоминаются в соответствующих документах Java, и они обычно не играют никакой роли, если мы используем в приложении поддержку только поддержки, не смешивая их с "родными" элементами из sdk). В качестве примера см. Раздел FragmentActivity, раздел "Известные ограничения".

Что касается вашего второго вопроса - большое количество новых функций включено только в библиотеку поддержки, избегая дублирования в основном SDK (в качестве примера, например, android.support.v4.view.ViewPager и android.support.v4.view.PagerAdapter), Сохраняются возможности дублирования (например, фрагмент), чтобы поддерживать совместимость приложений, которые были разработаны с использованием встроенной реализации.