Проблема
Вы хотите использовать новые функции Android, но ваше приложение правильно работает только в старых версиях.
Решение
Используйте библиотеки совместимости — для этого они и предназначены.
Обсуждение
Android — замечательная система для пользователей, в которой с каждой версией добавляются новые функции. Но есть проблема: более старые устройства не поддерживают последнюю версию Android. Производители низкоуровневых (дешевых) устройств, возможно, никогда не выпустят обновлений. На более высоком уровне (так называемых флагманских устройствах) пользователи обычно получают обновления от производителя каждые два или три года. Но производители (и сотовые операторы), подобно производителям автомобилей, которые каждый год выпускают новые модели, чтобы соблазнять владельцев покупкой обновлений, которые им на самом деле не нужны, ожидают, что пользователи будут часто приобретать обновления.
Недостатком этого для нас как разработчиков является то, что некоторые функции, которые были добавлены в современных версиях, таких как Android 7, не будут поддерживаться на некоторых устройствах пользователей. Если вы не учтете это, то можете отключить методы вызова, существующие в современных версиях, но не в библиотеке на каждом устройстве пользователя. Это, конечно, закончится плохо.
Решением проблемы являются библиотеки совместимости. Они предоставляют заменяющие версии общих классов (например, Activity), которые используют только функции, найденные в старой версии Android, но обеспечивают функциональность более новых версий.
Теперь вы можете подумать, что старые версии быстро исчезают, но сайт показывает, что это справедливо только с определенной точки зрения (рис. 1.).
Рис. 1. Рыночные доли версий платформы Android (по состоянию на август 2016 г.)
Обратите внимание, что доля версии Froyo API 8 составляет 0,1%, что является порогом для включения. Таким образом, вы ожидаете, что она исчезнет в любой день, но на самом деле ее доля нескольких месяцев назад составляла 0,1%. Есть приблизительно 1,5 миллиарда устройств с платформой Android. Таким образом, 0,1% от этого количества означает, что все еще есть полтора миллиона активных пользователей устройств Froyo. У операционной системы Gingerbread есть еще 25 миллионов активных устройств. Если вы готовы пренебречь 26 миллионами потенциальных заказчиков, ладно. Но даже тогда все не так просто — есть функции, которые были добавлены в версиях Android 4, 5, 6 и т.д. Как вы отследите, какие функции и в каких версиях существуют? По большей части вам нужно не это. Правда, только если вы используете библиотеки совместимости!
Если вы создаете новый проект с помощью среды Android Studio, то по умолчанию он будет использовать библиотеку совместимости. Если вы работаете над проектом, у которого нет поддержки совместимости, вы легко добавите ее. Один из способов — добавить библиотеку вручную, отредактировав файл сборки, чтобы включить библиотеку с координатами com.android.support:design:24.1.1
(как подключить библиотеку см . эту заметку). Добавьте ее в файл pom.xml для каркаса Maven или app/build.gradle для платформы Android Studio (возможно, вам придется после этого обновить или синхронизировать проект). В среде Android Studio вы также можете выбрать модуль арр, выбрать команду Module Properties
→ Dependencies
(Свойства модуля
→ Зависимости
), щелкнуть на кнопке Add и выбрать последнюю версию библиотеки совместимости.
Затем самое важное изменение — убедиться, что ваши активности (все, которые потребуют новейших средств) основаны на активности AppCompatActivity
, а не на просто Activity
:
public class MainActivity extends AppCompatActivity {
...
}