В Jetpack Annotation появилась новая аннотация - @Discouraged. Она схожа с @Deprecated, но предназначается если вы не хотите что-то помечать устаревшим, но хотите "не рекомендуется к использованию"
#jetpack
📺 Новости мобильной разработки 2023.7 (19 мин)
Первый рабочий день - самое лучшее время освежить, что произошло в Android разработке за прошедшую неделю
🔥 Android 14 Dev Preview 2
👉 Новый стабильный Jetpack Lifecycle
🚀 Насколько Yatagan быстрее Dagger 2
#AndroidBroadcast
👩💻 А вы пьете достаточно воды? Чтобы это узнать, вы можете скачать приложение, но еще полезнее будет создать свое!
🔥 14 марта в 20:00мск приходите на бесплатный урок «Создание приложения для трекинга воды» специализации «Android Developer» в OTUS. На онлайн-курс действует рассрочка.
📚 На занятии мы создадим свое приложение для контроля водного баланса в организме посредством записей пользователя. Приложение позволит пользователю вводить необходимую норму жидкости потребляемой в сутки и записывать потребление воды в течение дня, а также просматривать статистику по дням недели.
👉 Урок будет полезен тем, кто делает первые шаги в Android-разработке или только планирует. А также людям с опытом и тем, кто ранее не использовал SQLite для хранения данных.
❗ Для участия зарегистрируйтесь здесь
Реклама. Информация о рекламодателе на сайте otus.ru
#партнерский
Начиная с Android 14, с помощью killBackgroundProcesses() нельзя будет убить процесс другого приложения. При попытке передать туда название пакета отличного от приложения из которого происходит вызов больше ничего происходить не будет, а в логах появится сообщение:
Invalid packageName: <package_name>
Новое поведение применяется ко всем приложениям, независимо от targetSdk. Подробности тут@android_broadcast #android14
В системном окне выбора Activity при запуске Intent теперь будет возможность добавить собственные действия. Для этого нужно положить extra EXTRA_CHOOSER_CUSTOM_ACTIONS в Intent. Помиго это есть специальная экстра для действия чтобы модифицировать отправляемый контент - EXTRA_CHOOSER_MODIFY_SHARE_ACTION
#android14
Automating dependency updates in a Compose project (4 мин)
Статья с рассказом подхода автоматического обновления зависимостей в Google с помощью сервиса Renovate на примере Compose и его зависимостей от Kotlin компилятора. Утилита сама генерирует Pull Request на основе описанных правил.
#tooling
В Android SDK появились интересные аннотации для вызова native методов для ускорения работы JNI в ART runtime:
🚀 @CriticalNative - использовать самую быструю JNI передачу из управляемого кода в нативный и обратно
👉 @FastNative - использовать более быструю (по сравнению с обычной) JNI передачу из управляемого кода в нативный и обратно
@android_broadcast #android14
Если вы хотите проверить поведение вашего приложения независимо от targetSdk, включить или отключить какие-то изменения поведения и другие
Подробности тут@android_broadcast #android14
Android 14 Dev Preview 2 содержит оптимизации системы управления памятью Android для улучшения использования ресурсов, когда приложения работают в фоновом режиме.
Через несколько секунд после того, как приложение переходит в состояние "cached", фоновая работа будет разрешена только в Foreground Services, JobScheduler или WorkManager. Фоновая работа вне этих API теперь будет запрещаться на порядок быстрее, чем в Android 13.
@android_broadcast #android14
В Android 14 поменяется поведение неудаляемых уведомлений из системной панели. По умолчанию теперь часть ongoing уведомлений можно будет удалять.
Ограничения не распространяются на:
👉 Когда телефон заблокирован удалить уведомление не получится
👉 Кнопка "Удалить все" в уведомлениях не будет удалять ongoing уведомления
👉 MediaStyle уведомления не удаляются
👉 Уведомления, которые не могут быть удалены по политикам безопасности
👉 Уведомления, связанные с частями работы Android Enterprise
В Android 13 уже стало возможным удалять уведомления, связанные с Foreground Service, если у уведомления не было помечен статус ongoing
Подробности изменения тут@android_broadcast #android14
В Android 14 разработчик сможет определить когда пользователь пытается сделать скриншот приложения. Для Activity можно зарегистрировать callback, который будет срабатывать при попытке сделать скриншот.
Для этого надо будет объявить разрешение DETECT_SCREEN_CAPTURE (не требует запроса во время работы приложения). Новый callback - Activity.ScreenCaptureCallbackКак я смог понять callback будет вызываться после совершения и никак повлиять на контент в скриншоте нельзя, как и предотвратить чтобы пользователь сделал его
Подробности тут@android_broadcast #android14
Дополнительные ограничения по запуску Activity из фона:
👉 При вызове биндинги Service, которые находится в приложения в фоне, вызовом bindService() из видимого приложения необходимо будет передать флаг BIND_ALLOW_ACTIVITY_STARTS, чтобы можно было запускать из Activity из этого Service
👉 Для отправки PendingIntent с помощью PendingIntent#send() теперь необходимо явно указывать хочет ли приложение давать права своим фоновым Activity для запуска PendingIntent
Нововведение применяется только для targetSdk=34 (Android 14)
#android14
В настройках системы появился раздел с персонализированными региональными настройками: единицы измерения температуры, первый день недели и система исчисления.
Используйте новые API getTemperatureUnit и getFirstDayOfWeek (доступны на Android 5.0+), чтобы учитывать это в отображении вашего контента.
@android_broadcast #android14
В Android 14 добавили новое API в PackageManager, которое позволит улучшить пользовательский опыт магазинов приложений.
Сейчас сторонним магазинам при каждой установке нового или обновлении существующего приложения приходится получать разрешение пользователя на установку. Это также делает невозможным обновление приложений в фоне.
С помощью PackageManager.requestUserPreapproval() можно запросить разрешение один раз в рамках сессии (установка нескольких APK), а не навсегда (
#android14