11 августа 2020
Убийцы приложений
Александр Носков
Опубликован скандальный рейтинг производителей смартфонов – убийц приложений в фоновом режиме. Разбираемся в причинах, следствиях, ищем решения.
Если вернуться к истокам понятия «смартфон», то на ум сразу приходит использование сторонних приложений, которые имеют доступ к аппаратному оборудованию телефона. Такому как экран и клавиатура, оперативная память и накопитель, центральный процессор и микрофон с динамиком, модемы сотовой связи и Wi-Fi. С течением времени к этому базовому перечню присоединилась многозадачность, способность КПК (карманный персональный компьютер) и коммуникатора (КПК с телефонным модулем) одновременно запускать несколько сторонних приложений и не прерывать их работу. Те производители начала 2000-х, которые не подержали тренд на многозадачность и работу запущенного приложения в фоновом режиме, ушли со сцены, потребитель от них отказался. Возможно, кто-нибудь помнит, что сайты по продаже или обмену б/у коммуникаторов и КПК того времени были переполнены сообщениями о продаже или обмене «Пальмы».
Во времена Android 10 кажется, что разработчики взяли обратный курс, без оглядки убивая запущенные в фоне приложения и превращая умный телефон снова в глупый. Чтобы убедиться в этом, достаточно воспользоваться сторонним приложением (не Google) «Будильник», «Трекер здоровья» или «Календарь». Экран погаснет, и спустя какое-то время смартфон остановит ваше приложение (смартфоны Nokia на Android Pie делают это через 30 минут), и вы проспите завтрак, не узнаете расход калорий или не отправите важное письмо по расписанию. Конечно, если вы не знаете, как настроить работу приложения в оболочке конкретного бренда. Мотивы производителей смартфонов заведомо понятны, но их поведение мешает всей индустрии. Давайте на конкретном примере разберем суть конфликта между производителями смартфонов и сторонними поставщиками ПО.
Мотивы производителей
Производители смартфонов достаточно долго слушали жалобы и стоны пользователей для того, чтобы сделать выводы. Увы, выводы часто делают не инженеры, а маркетологи, и именно их мнение в итоге превращается в прямые технические задания для инженеров и программистов. Так случилось и с ограничением работы приложений в фоновом режиме, а повлияло на это стремление производителя победить конкурентов по параметру автономности, где часы работы смартфона от одной зарядки аккумулятора конвертируются в звонкую монету, в прямой доход. Лично мне куда больше импонируют те производители, которые не изменяют прошивку в худшую сторону, а просто устанавливают более емкий аккумулятор. Но если ты А-бренд или стремишься стать им, то «тонкость» смартфона играет не менее важную роль, а значит, выход один – ограничить «умность» смартфона и тем уменьшить расход электричества.
Конечно, в случае совсем репрессивного подхода смартфон с «выключенным» фоновым режимом не будет лицензирован Google и не сможет продаваться в большинстве стран мира. Чтобы обойти это досадное недоразумение, борцами за автономность была придумана собственная система допуска приложений, представляющая собой условный «белый список» (пример Xiaomi), наполнение которого зависит от пользователя.
То, что это ненужный костыль, приводящий к хаосу, первыми прочувствовали сторонние производители ПО после прочтения многочисленных жалоб пользователей на «кривое» приложение в комментариях Google Play.
Жалобы сторонних программистов
Все жалобы программистов на вмешательство производителей смартфонов в стандарты Android слились в одну жгучую реляцию, опубликованную на IssueTracker (штатная «курилка» Google для разработчиков Android). Приведу ее целиком, исправив лишь стилистические ошибки:
Пишу это от чистого сердца. Пожалуйста, примите это во внимание. Как компания мы разрабатываем библиотеку, которая собирает данные с датчиков смартфона и информацию о его местоположении, отправляет их на нашу платформу и преобразует в значимую информацию о пользователе (пользовательские привычки, процедуры и т.д.). В последние годы было крайне сложно поддерживать китайские OEM-устройства (Huawei, Xiaomi и другие). Эти OEM-производители модифицируют Android OS таким образом, что это нарушает работу его основных функций. Поведение этих устройств по умолчанию — это запрет только что установленным приложениям на отправку и получение широковещательных сообщений, на работу после отключения экрана (wakelocks), на запуск служб, на фоновую работу стороннего будильника и т.д. Все эти проблемы всплывают внезапно, после выключения экрана смартфона, если пользователь заранее не внесет приложение в белый список. Проблема с этим подходом в том, что пользователи не очень сообразительны и не знают об этом. Таким образом, в глазах пользователей вина автоматически ложится на нас, разработчиков. В ходе решения проблемы нам необходимо определить производителя смартфона и помочь пользователю внести наше приложение в белый список. Поддерживать наше приложение таким образом — это значит знать особенности оболочки всех производителей (и всех версий. – Прим. авт.), и это кошмар. Кроме того, эти OEM-производители предварительно загружают (и удаленно настраивают) белый список пакетов, которым разрешено свободно выполнять указанные действия. Разве это справедливо по отношению ко всем остальным? Честно говоря, не понимаю, как Google сертифицирует эти устройства, если основная функциональность не работает из коробки?
Если вы считаете, что на OEM-производителей жалуются только неизвестные и неопытные производители ПО, то вы ошибаетесь. Вот высказывание представителя VLC (медиапроигрыватель) от 2018 года в ответ на жалобу в Twitter:
Huawei отказывается вносить наше приложение в белый список, ломает наше приложение, но при этом вносит в белый список наших конкурентов. От нас ничего не зависит. Так что вы можете называть нас как хотите, но не ленивыми.
Борьба VLC за свои права закончилась тем, что разработчики приложения внесли компанию Huawei в свой собственный черный список. Однако подобные жалобы от разных разработчиков на разных производителей длятся и по сей день, их слишком много, чтобы приводить их в одном материале. В итоге эта скрытая война привела к тому, что многие разработчики приложений под Android OS вынуждены создавать специальные сайты и разделы на них, объясняющие, как пользователь может обойти нелепые ограничения оболочки смартфона конкретного бренда.
Реакция общественности на самодеятельность производителей смартфонов
Негодование программистов и пользователей, которые в итоге оказались по одну сторону баррикад, росло и вылилось в смешной по названию, но очень полезный по смыслу проект “Don’t Kill My App” («Не убивайте мое приложение»). У проекта есть сайт и приложение в Google Play, а создала его команда Urbandroid, судя по наполнению портфолио – одна из пострадавших от вероломных «китайцев». На сайте проекта ведется свой рейтинг брендов, опасных для нервов пользователя, который в какой-то мере опровергает устоявшиеся представления о лучших смартфонах.
Данные и статистика собираются с помощью фирменного приложения (и по отзывам пользователей), суть работы которого проста. После установки и запуска приложения (бенчмарка, по своей сути) пользователь может запустить тест, предварительно выставив длительность его проведения (от 1 часа и дольше).
Приложение работает в фоне и фиксирует попытки операционной системы его отключить. Если иконка запущенного “Don’t Kill My App” исчезла из верхнего бара, значит, у ОС получилось его прибить или время теста завершено.
По истечении указанного времени пользователь должен вновь запустить приложение, после чего он получает отчет и советы по обходу ограничений. После удаления приложения системные настройки ОС не удаляются вместе с ним, так как приложение глубоко идейное. Стоит указать, что апплет находится в раннем доступе и некоторые функции могут работать не очень хорошо (выдача советов, например). Но самая главная функция — отправка отчета на сайт борцов с ограничениями работает исправно. Чтобы отправить отчет нажмите на значок «поделиться» («расшарить») в верхней правой части экрана и выберите сайт движения из списка.
Заключение
О проблеме остановки фоновых процессов в некоторых смартфонах около месяца назад уже писал Константин Иванов в своем материале. Здесь же хотелось более подробно рассмотреть общую проблему современных смартфонов, которая заключается в излишней простоте получения сертификата Google, в слишком резиновых стандартах.
На дворе середина 2020 года, в лабораториях Google тестируется уже второй предрелизный билд Android 11, а строгого стандарта работы приложений в фоновом режиме для всех игроков рынка так и не появилось. Настройка работы сторонних приложений в MIUI может удивить своим длинным списком действий даже прожженного пользователя Android, но настоящим «злодеем» является вовсе не Xiaomi. Нет, это всем известные бренды, OnePlus, Huawei и Samsung, чемпионы по автономности. Не очень сообразительные пользователи тоже никуда не делись, а значит и рекомендовать им к покупке смартфоны этих брендов не стоит.
Надеюсь, что этот материал был полезен, а на прощание прошу нажать на колокольчик, ударить в гонг или отбить склянку. Есть что добавить? Прошу в комментарии.
Кыш отседова, коли мамка не научила общаться вежливо.
По Asus-у.
Изначально жестковат app killer для меня. Минус также и в том, что нужно сильно повозиться, чтобы настроить под себя, так как настройка не в один клик иногда.
Некоторым настраиваемость нравится, некоторым нет. Я бы хотел, чтобы из коробки работало как надо, с неким временем небольшим для адаптации под меня
«Надеюсь, что этот материал был полезен» — спасибо, я теперь ближайшие года 2-3 точно не буду задумываться о покупке смартфона на Android. Благодарю автора статьи за это!
А я вот совсем не понимаю, нахрена нужны куча приложений, которые могут работать в фоне. Ну есть у меня погода, убил я у нее фоновый процесс. Виджетов не пользуюсь. Ну вечером запустил я погоду, ну на полсекунды позже оно открылось, чем если бы висело в памяти. Но реальную температуру показало бы также, обмениваясь с сервером. Прироста скорости не видел. Также слушаю я aimp. Ну убьется он в фоне, или сам ему запрещу работать. Да пофиг. Плейлист начнется все равно с последнего места проигрывания, все в настройках самой проги делается. Ну только минус, на запуск уйдёт какое то время. Может для получения уведомлений ещё и нужен фоновый процесс. Только много ли таких программ- где оповещение очень нужно. На ум только мессенджеры и почта приходят. В целом у себя я только ЯБ в фоне и мессенджарам даю работать. Ну и навигаторам во время поездок. Хотя может я что то не понимаю и путаю эти самые фоновые процессы
вы слушаете aimp, и не прикасаетесь к телефону? и экран не выключаете?
Амир слушаю, телефон в кармане, экран естественно выключен. Ну играет он и играет
у вас играет, у других гаснет, о том и статья.. Хотя я в своих проектах с этим не сталкивался особо пока.
Если разработчик рукожоп — то это его проблемы.
у меня играет в СГС7 aimp
Внезапно будильник, внезапно сообщения от банков, внезапно календарь (это когда руководство назначает встречу, а не вы записали и запомнили) опять же crm’ки.
И да, почта, месенджеры, плееры….
Все так. Но на каждый ваш пример, можно найти десяток, которым фон для основной задачи не требуется, но он есть и жрет батарею 24/7.
И может кто подскажет, на каком телефоне тогда есть возможность, чтобы если у меня и были бы открыты 40-50 вкладок в ЯБ, то чтобы и через день, вкладки не выгружались бы из кеша и не обновляли бы получается страницу по новому. А именно бы была та самая вкладка, пусть уже с неактуальной инфой. Но я бы сам мог обновить уже ее бы по своему усмотрению
Самсунг А40.
Что то я сильно сомневаюсь.
Самсунг А51 (6/128) не позволял. Да и Асус зенфон 6 тоже не мог.
40-50 вкладок на хромиуме это 4-5 гб оперативки, вот и прикидывайте.
Маловероятно, честно говоря. Держать столько вкладок при 6-8 ГБ телефон может, но если свернуть браузер и пользоваться другими приложениями, хром с таким объёмом занятой памяти система точно порежет.
Было бы удобно, если бы вообще всем приложениям было запрещено работать в фоне, а при такой необходимости — появлялся бы запрос (как к доступу к геоданым или карте памяти). Ибо нефиг. Висит всякое дерьмо, шпионит за твой же счет и рекламу показывает.
Странно все это. С ванпласом уже два года после пикселей и нексусов и никогда не обращал внимания на убивание приложений. А тут оказывается на 1 месте ванплас. При том, что жалобы на пропуски уведомлений обычны были от владельцев хуавей и сяоми.
Это да, были траблы в 1+5, не приходили вызовы в вайбере, пришлось покопаться, чтобы настроить. Да и в целом, недолго держит он в памяти приложения, хотя 8гб озу должно хватать.
Запретить всю работу в фоне, а push уведомления сделать наконец рабочими чтобы мессенжеры могли без фона работать и будет наконец нормальный телефон
очень метко подмечено, именно телефон. не смартфон, увы. Прощайте медиаплейеры, виджеты и много чего еще
У меня Xiaomi и плеер PowerAmp с виджетом. И все работает!
Так что винить надо в первую очередь разработчиков кривых приложений, которые сами не закрываются, постоянно висят в памяти и жрут ресурсы.
чем старше версия андроида, тем меньше вообще возможностей остаться в фоне и чего то там жрать.
и вряд ли можно осуждать разработчиков, особенно инди-проектов, что они не удосужились себе купить весь парк существующих устройств и не обеспечили совместимость с требованиями от всех производителей.
А как будут работать gps трекеры тогда
Не, ну так же выйдет iOS, не могло сообщество android столько сражаться со злом, чтобы в итоге стать этим злом.
Штатное убивание фоновых приложений по умолчанию поддерживаю и одобряю. Плач Ярославны разработчиков всякого непотребного софта для мобил не принимаю — как показали годы работы с Андроидом, эти ребята в массе своей бессовестны и беспринципны. Если их софту необходима работа в фоне, пускай пишут об этом в самом приложении, предварительно объяснив пользователям (и убедив их), зачем это нужно или идут лесом.
Это важно особенно сейчас, когда имеем повальное распространение функций слежения за пользователями в приложениях.
Хуже того, они этого даже не стесняются. Именно функцию слежения, приводят в пример необходимости разрешить фоновую работу. Зла не хватает.
«убивание» приложений в фоне очень даже хорошо! но только при при условиях: 1) убиваться должны все, а не только сторонние , 2) должна быть «жесткая» настройка белого списка.
Жудкий фоновый убийца сяоми, настолько жудок, что убивает не только фоновую работу сторонних приложений но и своих. Весьма благодарен ему за пролюбливание уведомлений из родного календаря, выброс из фона проигрывания встроенного плеера и необновление данных встроенного же виджета погоды. Да да самдурак настраивать надо, но смешно.
Автор озвучивает претензии только одной стороны. Почему не указал мнение разработчиков прошивок о качестве современного софта на адроид и о том насколько скотски разработчики софта относятся к энергопотреблению?
У меня вон тоже страшный и ужасный сяоми. С третьего поколения в семье аппараты бегают. Сказать что автовыгрузка приложение это что-то пипец как страшно не могу. За эти годы белый список приложений на MIUI обновился качественно. И теперь не нужно вотсаппы с телеграмами самому ручками выводить в топ. Остальные же приложения на Xiami Note 7 загружаются за секунды. Разница между открытием из памяти и просто запуском с нуля минимальна. Более того некоторые приложения с удовольствием запихнул в черный список. Чтоб умирали сразу после закрытия. Например зомби против растений очень качественно сжирали батарею в свернутом режиме. Казалось бы. Они там тупо в стенд бай… А батарея сгорает на глазах. Кинул в ЧС и красота. Энергопотребление вне игры вышло в штатный режим. За все время пользования телефоном у меня есть несколько примеров такого софта, обошедшего автовыгрузку. Ставишь программу и у тебя почему-то батарея начианет бешено протекать. Таким образом можно предположить что среди всех тех программ, которые MIUI автоматически выгружает из памяти имеется довольно таки объемное количество софтин жрущих батарею. Что с точки зрения производителя категорически вредит его репутации. Он втыкает батарею на 4k махов, оптимизирует свое железо, прошивку… А пользователь загружает кучку софтин и помойки гугла, которые будут съедать эту батарею в хлам за полдня. К кому пойдут с претензией пользователи и кто понесет репутационные потери? Авторы софта у которых ручки из жопы? Гугл, который не может сбалансировать штатными средствами проблему энергопотребления? Не смешите меня. Пойдут к производителю телефона и вынесут ему мозг… Потому Самсунг и во главе «сил зла», что его репутация ему в тыщу раз дороже чем обидки «ведущих разработчиков» софта.
Так что в целом я не вижу сильно большой проблемы. Если надо, любой софтине могу дать приоритет. Но вот даже Sporify которым я сейчас активно пользуюсь не напрягает тем что вываливается в аут при простое. запук дело пяти секунд. Лень даже в белый список пихать. При моем сценарии использования это не составляет критичной проблемы.
Так нельзя фирменным программистам языком болтать, корпоративная тайна. Может они думают также как и сторониие, но сказать ничего не могут. И опять же, никуда не делись «не очень сообразительные пользователи», которые хотят чтобы из коробки было как им надо.
При миллиардах пользователей, «из коробки как надо», в принципе недостижимо. Поэтому на этот аргумент просто забиваем. Демагогия и популизм. А во-вторых, чтобы знать как ему/ей надо, нужно _знать_, что можно ожидать. Не хотеть, я может тоже хочу телепортироваться, а не на транспорте трястись, а именно ожидать. Откуда до умения сделать как хочу, крайне недалеко. Слишком завышены ожидания.
Думаю в большинстве случаев пользователю работа в фоне на хрен не сдалась. Исключение наверно мессенджеры. И с ними проблем не наблюдаю, все приходит в срок. Уведомления от штатных приложений типа будильника, календаря исправно работают, и на том спасибо.
Самсунг убивает сторонние приложения, но оставляет свои. В итоге ни нормальной работы приложений, ни нормального сна у телефона, который за ночь может спокойно 20-30% зарядки сожрать просто лёжа на тумбочке.
То, что мой Самс Ноте 10+ прибивает приложения в фоне — это понятно и видно. У них есть раздел отдельный, куда смарт их сваливает сам.
Но он все равно с трудом живет до вечера. Не понимаю…
Тоже всегда было интересно, куда на samsung улетает батарейка, если приложения вообще не держатся в оперативке. Видимо слишком много отчётов в ЦРУ сгружает по сети.
космический эксинос, волшебное One UI, кривизна рук корейцев — это все часть флагманского имиджа давлеющая над автономностью.
Пускай сделают сначала рабочий(!!!) белый список, а не как у хуавей. А потом убивают кого угодно
А чего ткнуть режим не экономить акк и всегда запущено так сложно?
На самсунг норм настраивается,а вообще лишнее акк жрет я все вырезают что ненужно или нужно раз в год
Не очень сообразительные пользоатели, как выразился тот программист — вот оновной контингент покупателей Samsung) Они не умеют вырезать и настраивать. А из коробки Samsung убивает всё подряд.
Нет. Виво убивал сразу, самсунги надо настраивать
Ну, VLC где-то через полгода помирилась с Huawei, а недавно их добавили в AppGallery, теперь совсем друзья, и точно попали в белый список 🙂
https://twitter.com/videolan/status/1243190611164962819
ОМГ: нашёл способ встраивания твитов в disqus 🙂
Ссылка в тегах кода, дальше «оно само».
UPD: пропал твит. Как жить теперь? 🙂
Что-то сразу захотелось поддержать разработчиков прошивок с их чёрными списками. Но вообще можно же как-то оптимизировать. В Android уже давно экспериментируют с уведомлениями о повышенном энергопотреблении, почему бы в таком случае не предложить сразу ограничить работу в фоне на будущее (с парой фраз о последствиях — вроде задержек уведомлений и отключения геолокации). Поди и пользователи станут более сообразительными…
Это одна из основных причин почему я купил вейяхуй единственный и последний раз.
Huawei Nowa. Типа есть настройка белого списка. Проблема в том, что не все можно добавить в этот список. Самый бесячий пример. Люблю во время прогулок или перед сном слушать озвучку книг. За озвучку отвечает гугловский движок. Проблема в том, что читалку (например Cool Reader) я могу добавит в белый список, а синтезатор речи Google нет, так как настройки его просто не видят, хотя приложение является системным. В результате через полминуты после отключения экрана озвучка затихает.
Мунридер+ на самом душегубном душегубе ванпласе (по таблице в статье) работает часами
Телефон убивает не читалку, а синтезатор речи. Озвучка в читалке работает через стороннее приложение — синтезатор речи Google, которое и прибивается. В телефоне легко сделать так, чтобы читалка не прибивалась, а вот чтобы синтезатор речи не закрывался сделать нельзя, так как соответствующие настройки смартфона не хотят видеть этого системного приложения и, соответственно, настроить этот момент не получается.
Как я понял из описания приложения при запуске этой функции нужно отключить экономию или умное управление для читалки. Причем само при согласии туда кидает. И потом на ванпласе и на сяоми нет проблем (про сяоми плохо помню уже)
Всем разработчикам и их жалеющим, вспомните, с чего вообще начали блокировать фон? За что боролись, на то и напоролись. Хотели работать в фоне надо и НЕ надо — получите и распишитесь. Под «не надо» также подразумеваю функции не связанные с основной функциональностью приложения — маркетинг, слежка.
Мы хотим но не хотим ? В общем раз приоритетные приложения у брендов есть, идущие в белый список по умолчанию, то надо их обязать самим проверять все приложения, еще на стадии запиливания прошивки в новый телефон + обновления для уже купленных.
Вроде норм всё в Huawei работает. Пок войне мере в Mate 30 Pro. И в 20м про все ок работало, он не выметал из памяти ничего.
В 1+ 7pro тоже проблем не было. А вот как раз за pixel 4 и pixel 3a водилось немного, по тихому что-нибудь заглушить в фоне. Особенно если игрушка какая из разряда от кайрософт простая.
Незнаю на OP6t нет напрягов с выгрузкой вроде. Или так быстро грузит обратно.
Но что точно нет проблем с приходом уведомлений.
Даже озвучка текста в мунридере, которую на сяоми нужно было в нескольких местах прописывать для работы нормально по умолчанию держится в фоне.
Голос разработчика: В последних версиях Андроида можно запускать специальным образом сервис(foreground service), который будет работать в фоне, но система его не прибьет, и такой сервис должен обязательно добавлять иконку в нотификации и она постоянно на экране. То есть пользователь сразу видит что что-то работает в фоне и может соотв ткнуть и посмотреть что это.
Это когда вытаскиваешь шторку, а там десяток-другой неубирающихся уведомлений приложений, которым надо висеть в шторке, чтобы их не прибило? Так себе реализация.
Иконки нотификации вроде как для новых уведомлений сделаны, а в итоге там постоянно одни и те же значки висят, а уведомлений как таковых не видно.
А ещё у меня S8 легко убивает таскер, хотя он в этих уведомлениях висит. А белого списка в последних прошивках я так и не нашёл, хотя раньше был.
Так это реклама такая завуалированная Самсунгу М31?! Сегодня обзор же вышел у вас.
У нас нет координации, совпало.
Спасибо полезную статью! Все вышесказанное прекрасно коррелируется с проблемами потери связи между апп-компаньоном и смарт-часами.
А что мешает сделать еще одно разрешение типа «разрешения работать в фоновом режиме» и добавить его в общий список разрешений доступа? (как камере и прочему)
В прошлом обсуждении проскакивала здравая идея, что Гуглу это не выгодно. Вот и приходится вендорам колхозить велосипеды, фактически реализуя это разрешение.
Palm дома лежит и ещё работает на тоже Батареи, что была куплена.
Скопирую свой же камент из материала Кости Иванова. Больше сказать нечего:
А потому что делать надо грамотно. Скажу страшное: абсолютному большинству приложений работа в фоне не нужна.
Вот взять те же пуши, как оно сделано у яблока.
Есть 1(один) системный сервис, который работает в фоне и слушает пуши. Приложение, желающее получать пуши, регистрируется в этом сервисе и прибивается. Когда пуш приходит, система сама его отрисовывает в шторке, пиликает динамиком, вот это все. По тыку в пуш приложение запускается с параметром тут_тебе_пуши_нападали. В новых версиях разрешили обработку в фоне, то есть система будит приложение: «вот тут тебе пуш пришел, у тебя 15 секунд, потом прибью, время пошло!»
В результате, если вы поставите 500 приложений с пушами, у вас будет 1 (один) торчащий наружу фоновый сервис (который никто не прибьет, ибо системный), все остальное будет спать и не жрать батарею.
Если вы на андроиде поставите 500 приложений с пушами, у вас будет 500 фоновых сервисов, которые будут жрать память с аккумулятором, ну и периодически дохнуть, переставая получать сообщения.
Ну и со всеми остальными фоновыми активностями примерно то же самое. Безусловно, есть вещи, требующие работы в фоне, то же VoIP, к примеру, или какая-нибудь навигация в фоне, но таких вещей исчезающе мало и им хватит по одному-двум одновременно работающих сервисов.
Я в потрохах на уровне продвинутого пользователя, но кмк, ваша/эпловская идея, даже не особо напряжна в реализации. У приложений куча ресиверов, подписанных на разные системные события, типа батарейка села, таймзона сменилась или кнопка нажалась. Один в один описанное. Достаточно добавить еще один тип события.
Я в андроиде не силен, но, насколько я понял, чтобы эти ресиверы работали, для каждого приложения должен быть свой фоновый сервис, который эти самые события слушает и как-то на них реагирует. Если этот сервис сдох, то реакции на события не будет (сообщения не приходят, часы отваливаются, и т.д.)
В яблоке у приложений никаких фоновых сервисов нет. Есть системный сервис, который слушает события. Приложения на него по желанию подписываются. Если событие случилось — приложению об этом сообщат. Если оно вдруг сдохло — разбудят, сообщат и дадут 15 секунд на реакцию.
Сильно упрощенно, конечно, но суть, я думаю, понятна.
И потому у яблока нет проблем ни с пушами, ни с аццки жрущими акк сервисами.
Собрались два несильных)) Но думаю вы ошибаетесь. Среди событий есть boot-completed, срабатывающий тогда, когда еще ни один сервис не запущен и как раз их запускающий. Плюс, если посмотреть, то этих ресиверов на приложение может быть больше десятка, а некоторые подписаны на два и более событий. Так что — чисто событийная система. А вот пуши, и куча других событий, регистрируемых например Таскером (всего 6 ресиверов, на 8 событий), это уже фоновым сервисом.
Не понял, в чем я ошибаюсь. Для пушей не нужны сервисы для каждого приложения — яблоко тому пример. Там вообще нельзя написать сервис к приложению, однако ж пуши ходят, музыка играет, виджеты обновляются, часы не отваливаются. Магия?
В принципе, для событий, сервисы приложений не нужны. В конкретной реализации, может быть по разному. Андроид, некоторые события обрабатывает аналогично пушам у Эппла, подпиской на уведомления. Но другие, те же пуши, требуют сервиса.
Почему так? Предположу, что пуши Андроида это не системное событие, а свойство GMS. Которые хоть и системное ПО, остаются сторонним опциональным компонентом.
Почему так? Эппл — монолит. Собственные устройства, собственные сервисы. Ни байта врагу. Встроили и радуются. Андроид же универсальная, опенсорсная, общедоступная система, а интернет-сервис обеспечивающий пуши, завязан на инфраструктуру Гугла. Поэтому в ОСи их нет, а есть в коде принадлежащем непосредственно Гуглу.
Варианты сделать пуши как таковые частью системы есть, но Гуглу это не выгодно, теряют и без того слабый контроль. Была надежда на Хайвей. Надеялся что реализуют архитектуру провайдеров услуг, но они окзались еще большей собакой на сене.
Здравствуйте. Хотел бы у вас попросить совета. Работаю в такси и недавно приобрел Хуавэй 9. Дело в том что перестали приходить заказы. У меня работают 3 программы в фоновом режиме. Батарею я успокоил для этих приложений, разрешил ручной режим. Уведомления все выставлены правильно. Я уже не знаю, что делать. Как только включаюсь в работу, уведомления приходят, но стоит принять два, три заказа и через час все останавливается. Помогите