Ликбез
гашенным экраном, г) лежит в таком состоянии некоторое время. Он реализован очень толково
и его внедрение не повлекло никаких проблем, хотя немного и изменило поведение многих приложений. Но это изменение чётко
описано в документации и не приводит к ошибкам. Тот, не очень частый случай, когда всё сделано
так, что я аж доволен результатом.
Но некоторые производители решили, что обновлять свои устройства до Android 6 — это слишком
невыгодно для них. Потому они
выпустили обновления «не идентичные» натуральным. К, примеру
один крупный производитель добавил «режим сна», вроде Doze.
Только в отличие от случая с Doze,
приложения, попавшие в список
«Оптимизированные», тупо останавливались. Поясню. В Android
есть разница между «убить» приложение и «остановить» его. Kill,
как правило, неэффективен, о чём
я писал в первой части лекции.
Если приложение имеет модуль
приёмника широковещательных
сообщений или, скажем, службу, то оно будет поднято. Служба может поднять его прямо сразу, а бродкаст ресивер — при рассылке ожидаемых широковещательных сообщений. А вот если
остановить приложение специ-
альной кнопкой Force Stop, то будут остановлены все компоненты
приложения и их запуск будет невозможен до тех пор, пока пользователь самолично не запустит
приложение (это не касается администраторов устройств и приложений, имеющих доступ к чтению
уведомлений) . По причинам безопасности, остановку можно сде-
Одно приложение
может убить другое,
но не может
его остановить
лать либо вручную, либо в режиме отладки. Одно приложение может убить другое, но не может его
остановить. А вот система — может. И это использовал производитель. Он останавливал приложения и запускал их заново исходя из своего видения прекрасного. Очень многие приложения были не готовы к такому поведению
и падали. Такое поведение даже не предусмотрено в AOSP! Но
ещё дальше пошёл один китайский бренд. Они решили, что если экономить батарею, то по-крупному. И просто вырезал бродкаст
49