Мобильный интернет стоит дорого, особенно если тарифный план не всем по карману. Пользователям Android нужна возможность сократить использование данных или полностью заблокировать его для приложений. В Android 7.0 для этого есть функция экономии трафика.
Пользователь может включить или отключить режим экономии трафика. Разработчикам приложений следует использовать новый API, чтобы проверять, включен ли режим экономии трафика. Если он включен, разработчики могут настроить свои приложения так, чтобы они работали даже при ограниченном доступе к данным или его отсутствии.
Конечные пользователи смогут контролировать, какие приложения могут получать доступ к данным в фоновом режиме, а какие – только когда они открыты. Это позволяет обеспечить обмен данными в фоновом режиме, когда экономия трафика включена для пользователя.
Реализация
Поскольку экономия трафика – это функция платформы, производители устройств получают ее по умолчанию в версии N. Исходные файлы находятся в каталоге:
packages/apps/Settings/src/com/android/settings/datausage
Интерфейс настроек
В проекте Android Open Source Project (AOSP) есть пользовательский интерфейс настроек экономии трафика по умолчанию. Примеры приведены на скриншотах ниже.
На этих скриншотах показан режим экономии трафика.
Рисунок 1. Отключение и включение режима экономии трафика
Рисунок 2. Когда включены режим энергосбережения и режим экономии трафика
Рисунок 3. Экран использования данных приложением: "Настройки > Приложения > Использование данных".
Рисунок 4. Состояние экономии трафика в меню быстрых настроек
Приложения
Важно! Производителям устройств не следует добавлять приложения в белый список. Даже если они это сделают, пользователи могут удалить их. Если добавить другие приложения, пользователям придется выбирать, для каких из них включить экономию трафика.
Все разработчики приложений, в том числе производители устройств и операторы связи, которые предустанавливают приложения, должны реализовать поддержку функции "Экономия трафика". Инструкции для разработчиков приложений о том, как обнаруживать и отслеживать состояние режима экономии трафика, можно найти на сайте developer.android.com. Дополнительную информацию для партнеров можно найти в разделах ниже.
Чтобы оптимизировать приложение для режима экономии трафика, необходимо:
- Удалите ненужные изображения
- Использовать более низкое разрешение для остальных изображений
- Используйте видео с более низким битрейтом
- Запуск существующих упрощенных версий
- Сжатие данных
- Учитывать статус сети (с тарификацией или без), даже если экономия трафика отключена.
Чтобы приложение хорошо работало в режиме экономии трафика, оно не должно:
- Автовоспроизведение видео
- Предварительная загрузка контента и прикрепленных файлов
- Скачивание обновлений и кода
- Запрашивайте добавление в белый список, только если фоновые данные действительно необходимы для основных функций
- Считать белый список разрешением на использование большей пропускной способности
Проверка
Чтобы убедиться, что функция работает правильно, выполните следующий CTS-тест:
com.android.cts.net.HostsideRestrictBackgroundNetworkTests
Кроме того, команды adb можно использовать для проведения тестов вручную. Сначала выполните следующую команду, чтобы посмотреть все доступные варианты:
adb shell cmd netpolicy
Например, эта команда возвращает UID приложений из белого списка:
adb shell cmd netpolicy list restrict-background-whitelist