Помилка документації: зареєстровані трансляційні приймачі маніфесту отримують наміри ACTION_SHUTDOWN в 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. За його словами, це не вперше.