Android 6.0 сократит расход аккумулятора и не только

Android 6.0 Marshmallow значительно сократит энергопотребление устройства. Об этом рассказал первый в России Google Developer Expert Денис Неклюдов. Также он описал ключевые изменения в системе и механизмы их работы: нас ждет более крутой автобэкап, официальный API для сканеров отпечатков пальцев и новая система разрешений. О том, что все это значит для пользователей – читайте в интервью.

Непереводимое название “Google Developer Expert” обозначает признанного Google эксперта в какой-либо области разработки технологий Google, не являющегося сотрудником этой компании. Статус GDE выдается на год и подразумевает выступления на конференциях и публикацию материалов, помогающих разработчикам разобраться в Google-технологиях. Наш собеседник, Денис Неклюдов, выступил на конференции Android-разработчиков Droidcon Moscow 2015 с докладом об адаптации приложений к новой ОС.

Начнем с самого острого вопроса. Обновление до Android 5.0 Lollipop происходило долго и трудно, на данный момент обновились до последней версии только 21% устройств на Android. Изменится ли ситуация с Android M?

О каких-либо связанных с этим переменах в политике Google мне неизвестно. Поэтому я думаю, что история повторится, и лишь немногие девайсы будут сразу выходить с шестой версией Android, как, например, новый Nexus. Samsung и другие вендоры обновятся с опозданием. Никаких изменений в режиме и методе обновлений нет, поэтому все будет как раньше… и про старые устройства все забудут. Но будем ждать 29 сентября – кто знает, что нам скажут на презентации.

Также с каждым обновлением Android разработчики обещали оптимизацию работы батареи, но в той или иной степени проблемы с энергопотреблением испытывали все девайсы, даже “родные” Nexus. Решен ли вопрос в этот раз?

Да. В этой области Google сделали большой шаг, идеологически похожий на то, как работают iOS-устройства. Дело в том, что изменилась система доступа приложений к ресурсам.

Всем известен кейс, что если оставить телефон днем на столе с включенным 4G и Wi-Fi, то к вечеру он сильно разрядится, потому что у всех приложений есть доступ к сети, и они постоянно что-то синхронизируют, а если приложений много, то кто-то из них то и дело зависает и начинает “жрать” ресурсы.

Теперь, если мы гарантированно не пользуемся устройством, то запускается режим минимального энергопотребления, который резко снижает расход батареи даже при подключении к Wi-Fi.

Разработаны два новых режима, Doze и App Standby. Doze активируется, если в течение определенного времени – получаса или часа – девайс неподвижен, его экран не включается, и устройство не находится на зарядке. Режим делает так, что на неиспользуемом телефоне практически все приложения уходят в сон, и это снижает расход энергии.

App Standby отвечает за приложения, которые активны, но давно не используются, при этом из них не играет, например, никакая музыка и не приходят уведомления. Такие приложения попадают в режим изоляции, перестают получать ресурсы системы и не разряжают устройство.

Стоит заметить, что все, что я рассказываю, относится к чистому Android. В условиях сторонних прошивок, которые вендоры поставят на свои девайсы, предсказать работу системы сложно. Мы накатывали превью-версию на Nexus 6 и 9, и в режиме ежедневного использования расход действительно уменьшился.

Еще один вопрос про энергопотребление. Пользователи на форуме отмечают, что большая часть потраченной энергии приходится на работу сервисов Google Play. С чем это связано?

Сказать, что именно Google Play Services тратят батарею – это неправильно. Они часть операционной эко-системы, поэтому без них нельзя. Когда другому приложению – будь то карты или что-то еще – нужно получить местонахождение пользователя, оно использует Location Manager, который напрямую связан с Google Play Services. И именно благодаря тому, что сервисы Google Play “жили” в фоне, приложение карт, которое мы только что открыли, сразу же находит локацию.

Если бы не это, остальным приложениям пришлось бы тратить больше ресурсов. Например, Google Play Services отвечают за Google Cloud Messanging, через которые реализованы все push-уведомления, и если бы не это, каждому разработчику пришлось бы изобретать свою реализацию уведомлений, что привело бы к многократному увеличению расхода энергии. То есть Google Play Services явно отнимают зарядку батареи, но во благо.

Возьмем сервисы, связанные с фитнесом. Если пользователь дал согласие на отслеживание своего местоположения, то разработчику не надо будет в свое приложение встраивать фоновый сервис, который следит за активностью пользователя – Google Play Services бесплатно позволяют нам получить доступ к их хранилищу и считать информацию оттуда.

Это часть операционной системы. Жаловаться на повышенное энергопотребление Google Play Services – это как сказать: “Я поставил Android, а он жрет батарейку. Раньше телефон просто лежал выключенный, и все было хорошо”.

Давай поговорим непосредственно про шестерку. Что нас ждет с обновлением?

Первое, что заметят все пользователи – это новая система запросов на получение доступа к сервисам телефона, таких, как камера, микрофон, контакты и так далее. При установке приложение теперь будет запрашивать только базовые permissions. К примеру, приложение чата запросит доступ к SMS, если он связан с SMS, доступ к внешнему хранилищу, если ему надо сохранять какую-то информацию, и доступ к нашему аккаунту, чтобы получить наше имя. При этом можно будет соглашаться или не соглашаться с каждым конкретным пунктом, то есть давать доступ только к тому, к чему вы посчитаете нужным. Множество людей не хочет делиться своим местоположением, и теперь им не надо ставить сторонние рутовые штуки, чтобы запретить приложению получение доступа к геолокации. Теперь это встроено в операционную систему, а впоследствии в настройках приложения можно скорректировать список permissions, если это не сделано при установке.

Для разработчиков это тоже плюс, потому что многие пользователи не ставят приложения из-за списка запрашиваемых разрешений. Возьмем приложение-фонарик: пользователь не понимает, зачем ему доступ к камере, не осознавая при этом, что фонарик – это часть API камеры, и невозможно его включить без соответствующего доступа.

Некоторым приложениям необходим доступ к контактам, хотя это на первый взгляд неочевидно – например, чтобы быстро найти друзей. Теперь запрос на доступ появится не при установке, а только тогда, когда это будет необходимо в ходе работы приложения. После однократного разрешения программа не будет требовать повторного подтверждения.

Есть информация о том, что в Android M будет общий API для биометрических датчиков.

Да, в Android М появился официальный API, связанный с отпечатками пальцев. Любой разработчик сможет сделать в своем приложении аутентификацию через отпечаток пальца, если на устройстве стоит Android 6.0 и в него встроен соответствующий датчик.

Раньше разработчик, если его приложение запустилось на Samsung, и ему доступен сервис отпечатков пальцев, должен был использовать API Samsung. Теперь, надеюсь, произойдет объединение API с официальным, и разработчику не надо будет думать, на каком вендоре запущено его приложение.

Это приведет не только к увеличению количества приложений, которые используют авторизацию через “пальчики”, но и к увеличению количества устройств, оборудованных таким датчиком. Не придется тратить ресурсы на разработку API, так как все будет стандартизировано, что приведет к улучшению качества приложений.

Какие еще интересные функции можно ожидать?

В недалеком будущем мы сможем пользоваться системой авто-бэкапа. При смене одного устройства с “шестеркой” на другое, когда мы привяжем новое устройство к своему аккаунту, система сможет восстановить не только список приложений (и установить их на новый гаджет), но и данные из них. Таким образом нам не придется заново выставлять настройки – предпочтения по нотификациям в мессенджере, расположение нашего дома в картах и так далее. Пароли в бэкап входить не будут, только данные настроек.

Как происходит процесс создания копии?

Это будет происходить только тогда, когда устройство работает в Wi-Fi, а не в 4G, а также подключено к зарядке. При соблюдении этих двух условий раз в сутки будет осуществляться синхронизация данных настроек приложений, но не больше 25 МБ на приложение. Данные будут отправляться в шифрованную недоступную пользователю часть его Google-диска, но не будут учитываться в общем доступном объеме хранилища. Для пользователя процесс бэкапа не будет заметен, потому что все происходит автоматически, как правило, ночью, во время зарядки гаджета. При авторизации на новом устройстве данные мгновенно синхронизируются.

Спасибо, Денис! Будем ждать презентацию)