Грешка в документацията: Manifest Registered Broadcast Receivers Receive ACTION_SHUTDOWN Intents в Android 8.0

click fraud protection

Манифестните регистрирани намерения за излъчване са ограничени само до няколко в Android Oreo и ACTION_SHUTDOWN не е едно от тях, или не е?

Android използва намерения за излъчване за много неща. Разработчиците на приложения могат да ги слушат за извършване на определени действия, като например когато MEDIA_MOUNTED излъчва намерението за приложенията да знаят кога SD карта е монтирана като хранилище. Като разработчик на приложение можете да програмирате приемници за излъчване за това, след което да извиквате функция всеки път, когато се монтира медия, например, за да промените директорията за съхранение по подразбиране на приложението към SD картата. За този вид неща се използват намеренията за излъчване. Те се използват най-вече за излъчване на определени системни събития към всякакви приложения, които може да се нуждаят от тази информация. Приемниците за излъчване трябва или да бъдат регистрирани във файла на манифеста на Android или програмно, когато са на преден план.

Поради изобилието от разбиване на паметта, причинено от много различни разработчици, прилагащи всякакви видове излъчване приемници за често задействащи намерения, Google реши да ограничи достъпа до повечето от тези намерения за излъчване в Android 8.0 Oreo. Компанията обаче признава, че има няколко важни намерения за излъчване, които са допустими все още трябва да се слушат, тъй като те не се срещат толкова често и следователно имат малък шанс да причинят памет въпроси. Те 

публикува бял списък с имплицитно излъчване намерения, които приложенията за Android все още могат да слушат чрез регистриране на излъчващи приемници в манифеста на Android. Това е обширен списък и обхваща почти всичко, от което може да се нуждаете като разработчик на приложения, с едно изключение.

Изглежда, че Google не е изброил намерение за излъчване, което се използва от много приложения. Това е ACTION_SHUTDOWN намерение за излъчване. Това намерение се изпраща, когато устройството се изключва, което може да бъде много важно за разработчиците на приложения, за да могат бързо да затворят каквото и да прави приложението, преди процесът да бъде убит. Въпреки че това намерение за излъчване не се появява в списъка с намерения в белия списък, приложенията мога всъщност все още го слушате чрез регистриран в Manifest излъчващ приемник според ангажимент на Android Git, просто Google е забравил да го включи в списъка си.

Страхотно е, че всъщност е в белия списък, тъй като Google премахва възможността от приложенията да откриват, когато устройството се изключва би било лошо както за потребителите, така и за разработчиците на приложения, тъй като някои приложения вече няма да могат бързо да запазват работата преди изключване на устройството. Не сме напълно сигурни защо това намерение за излъчване не е посочено на страницата на Google за разработчици, но разговаряхме с ветеран разработчик на Android CommonsWare и той се съгласява, че това вероятно е проста грешка в документацията от страна на Google. Според него това няма да се случва за първи път.