tgoop.com/kotlin_adept/50
Last Update:
Custom Quick Settings tiles
Забавно, что являясь Android разработчиком, мне очень редко приходится решать задачи, связанные с самой платформой и ее фичами, и, думаю, я такой не один. Но недавно появилась потребность добавить свою кастомную плитку для приложения в шторку с быстрыми настройками.
Каждая такая плитка представляет из себя специальный сервис под названием TileService
. Это особый вид bound сервиса, который имеет свои особенности жизненного цикла и все нюансы подробно описаны в гайде.
Проблема только в том, что нашел я этот гайд уже после того как сам разобрался, что к чему, ведь по запросу TileService
отдавало все что угодно: скудную документацию, статьи подозрительного качества, но только не гайд
Главное, что нужно знать, что обновлять плитку можно только в промежутке между onStartListening()
и onStopListening()
и по умолчанию этот промежуток соответствует поведению, когда плитка видна на экране у пользователя, что выглядит довольно логично и похоже на то, как мы подписываемся на стейт в UI, но Google почему-то рекомендует явно запрашивать listening state
⚠️Однако я столкнулся с одной проблемой, само по себе взаимодействие с TileService
не переводит ваше приложение в состояние foreground и вы можете столкнуться с различными ограничениями системы. В моем случае помог запуск отдельного foreground сервиса из TileService.
#Android
@kotlin_adept