SlideShare a Scribd company logo
1 of 31
Держи свое приложение
на волне новинок
Денис Неклюдов
Google Developer Expert
Ведущий подкаста Android Dev
Разработчик в
А там что-то изменилось?
Изменения в DozeMode
Project Svelte - больше ограничений
API < 24 API ≥ 24
Manifest
API ≥ 24
Runtime
CONNECTIVITY_ACTION разрешен запрещен разрешен
ACTION_NEW_PICTURE
ACTION_NEW_VIDEO
запрещен запрещен запрещен
Экономим трафик пользователя
Data Saver Mode – ограничение фонового потока данных и не только.
ConnectivityManager.getRestrictBackgroundStatus():
RESTRICT_BACKGROUND_STATUS_DISABLED
RESTRICT_BACKGROUND_STATUS_ENABLED - нужно максимально снизить
использование данных сети. Фоновые запросы к сети могут быть
запрещены.
RESTRICT_BACKGROUND_STATUS_WHITELISTED
ConnectivityManager.isActiveNetworkMetered(): - ограничиваем использование
сети и в этом случае.
Multi-window
Для быстрой отрисовки графики
Поддержка Vulkan API
OpenGL™ ES 3.2 API
Улучшения SurfaceView
Multi-window
Все Activity, кроме той, с которой пользователь только что взаимодействовал
находятся в состоянии paused:
- не останавливайте воспроизведение по onPause()
android:resizeableActivity = "true" – меняет размер всех activity в стеке
resizeableActivity – для API ≥ 24 по-умолчанию true
- Fullscreen запрещен
- изменения атрибута screenOrientation игнорируются
Multi-window
<activity android:name=".MyActivity">
<layout android:defaultHeight="500dp"
android:defaultWidth="600dp"
android:gravity="top|end"
android:minHeight="450dp"
android:minWidth="300dp" />
</activity>
Multi-window
Узнаем о многооконном режиме:
- isInMultiWindowMode()
- onMultiWindowModeChanged()
Не забываем про поддержку drag and drop!
Ответ в уведомлениях
RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
.setLabel(“Ответить”)
.build();
Notification.Action.Builder(R.drawable.ic_reply_icon,
getString(R.string.label), replyPendingIntent)
.addRemoteInput(remoteInput)
Notification.Builder(mContext)
.addAction(action))
Отслеживание ответа в уведомлениях
Activity, определенная в PendingIntent ловит событие и обрабатывает его.
Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
private CharSequence getMessageText(Intent intent) {
Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
return remoteInput.getCharSequence(KEY_TEXT_REPLY);
}
Чтобы убрать прогресс в уведомлении, нужно удалить текущее уведомление
или обновить его.
Чат в уведомлениях
Notification notification = new Notification.Builder()
.setStyle(new Notification.MessagingStyle("Me")
.setConversationTitle("Team lunch")
.addMessage("Hi", timestamp1, null)
.addMessage("Not much", timestamp3, null)
.addMessage("How about lunch?", timestamp4, "Coworker"))
.build();
Группировка уведомлений
NotificationCompat.Builder(mContext)
.setStyle(new NotificationCompat.InboxStyle()
.addLine("Alex Faaborg Check this out")
.addLine("Jeff Chang Launch Party")
.setBigContentTitle("2 new messages")
.setSummaryText("johndoe@gmail.com"))
.setGroup(GROUP_KEY_EMAILS)
.setGroupSummary(true)
Quick Tile API
Для добавления своего значка быстрого доступа:
Создаем свой сервис наследник от TileService.
Можем запускать Runnable и отправлять Intent.
Можем менять иконку и текст.
Не можем раскрывать настройку на полный экран.
https://medium.com/@KieronQuinn/quick-settings-in-android-n-ea8ad8ce2eea
Шире возможности работы с телефоном
Добавлен черный список абонентов.
android.provider.BlockedNumberContract
Появилась возможность дефолтному приложению для звонков:
Сбрасывать входящие
Удалять звонок из истории
Скрывать уведомление о входящем звонке
android.telecom.CallScreeningService
Изменилась стратегия поиска подходящей строки:
Try fr_CH => Fail. Try fr => Fail. Try children of fr => fr_FR. Use fr_FR
Добавилась вторая дефолтная локаль пользователя
(LocaleList.getDefault()):
Try fr_CH => Fail. Try fr => Fail. Try children of fr => Fail.
Try it_CH => Fail. Try it => Fail. Try children of it => it_IT. Use it_IT
Улучшены форматтеры текста:
format(locale, "Choose a %d-digit PIN", 4)
Улучшения локализации
Больше улучшений ввода
Встроенный ICU4J (нет поддержки ICU4C)
Новые эмодзи и расширенная их поддержка
было:
стало:
WebView
Если установлен Chrome - будет использоваться он вместо WebView.
Можно запустить в отдельном процессе.
Теперь контекст JavaScript будет сброшен при загрузке новой странице
Доступ к геолокации только при HTTPS соединении
Доступ к новым бетам WebView
Android TV
Запись телепередач вашего приложения через TV recording API.
Возможность показывать “картинку-в-картинке”.
Direct Boot
Чтобы приложение могло работать до первой разблокировки устройства, на
котором включено шифрование:
<receiver
android:directBootAware="true" >
<intent-filter>
<action android:name="android.intent.action.ACTION_LOCKED_BOOT_COMPLETED" />
appContext.createDeviceProtectedStorageContext() - для доступа к ресурсам, SP и БД
directBootContext.openFileInput(appDataFilename) - для доступа к файлам
Context.moveSharedPreferencesFrom() и Context.moveDatabaseFrom() - для миграции
Улучшения в безопасности
Key Attestation
Network Security Config
Default Trusted Certificate Authority
Debug-only overrides
Cleartext traffic opt-out
Certificate pinning
APK Signature Scheme v2
Scoped Directory Access
Scoped Directory Access
StorageManager sm = (StorageManager)getSystemService(Context.STORAGE_SERVICE);
StorageVolume volume = sm.getPrimaryStorageVolume();
Intent intent = volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
startActivityForResult(intent, request_code);
if (requestCode == OPEN_DIRECTORY_REQUEST_CODE
&& resultCode == Activity.RESULT_OK) {
getContentResolver().takePersistableUriPermission(data.getData(),
Intent.FLAG_GRANT_READ_URI_PERMISSION |
Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
updateDirectoryEntries(data.getData());
}
Ближе к десктопам
Keyboard Shortcuts Helper для
отображения всех хоткеев приложения
Custom Pointer API для изменения иконки
курсора
Важно также иметь ввиду
Sustained Performance API – запрос на долгую нагруженную фоновую
работу
Улучшения в Print Service – больше возможности для кастомизации
FrameMetricsListener API – измеряем производительность на продакшен-
сборках
Virtual Files – доступ к облачным файлам, как к обычным
Не API, но нужно знать
Рантайм на три буквы
ART имеет теперь не только Ahead of Time, но и Just in Time компиляцию.
По заверениям разработчиков это повышает качество оптимизаций,
сокращая использование RAM и ускоряя работу приложения.
Также это избавляет от шага оптимизации при обновлении системы.
Динамическое изменение DPI
Теперь пользователь может изменить плотность DPI без рута и
перезагрузки.
Больше никакой линковки к нативным либам
обращения к приватным
нативным библиотекам API < 24 API = 24 API > 24
NDK Public разрешен разрешен разрешен
NDK Private
не удаленные
тост и лог с
предупреждением
тост и лог с
предупреждением
ошибка
NDK Private
удаленные
ошибка ошибка ошибка
Спасибо за внимание!
Денис Неклюдов
Подкаст: apptractor.ru/androidDev
telegram: @nekdenis
nekdenis@gmail.com

More Related Content

Viewers also liked

Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
 Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва  Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва it-people
 
Никита Михеенков. Контент и продажи. РИФ-Воронеж 2016
Никита Михеенков. Контент и продажи. РИФ-Воронеж 2016Никита Михеенков. Контент и продажи. РИФ-Воронеж 2016
Никита Михеенков. Контент и продажи. РИФ-Воронеж 2016РИФ-Воронеж
 
Александра Литманович. Интернет-маркетинг: инструкция по применению. РИФ-Воро...
Александра Литманович. Интернет-маркетинг: инструкция по применению. РИФ-Воро...Александра Литманович. Интернет-маркетинг: инструкция по применению. РИФ-Воро...
Александра Литманович. Интернет-маркетинг: инструкция по применению. РИФ-Воро...РИФ-Воронеж
 
Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016
Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016
Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016РИФ-Воронеж
 
Денис Кортунов. Беспощадный редизайн приложения. РИФ-Воронеж 2016
Денис Кортунов. Беспощадный редизайн приложения. РИФ-Воронеж 2016Денис Кортунов. Беспощадный редизайн приложения. РИФ-Воронеж 2016
Денис Кортунов. Беспощадный редизайн приложения. РИФ-Воронеж 2016РИФ-Воронеж
 
Алексей Безымянный. Опыт применения сервисов дистанционных консультаций в гос...
Алексей Безымянный. Опыт применения сервисов дистанционных консультаций в гос...Алексей Безымянный. Опыт применения сервисов дистанционных консультаций в гос...
Алексей Безымянный. Опыт применения сервисов дистанционных консультаций в гос...РИФ-Воронеж
 
Martins Legzdins. Завтра было вчера. РИФ-Воронеж 2016
Martins Legzdins. Завтра было вчера. РИФ-Воронеж 2016Martins Legzdins. Завтра было вчера. РИФ-Воронеж 2016
Martins Legzdins. Завтра было вчера. РИФ-Воронеж 2016РИФ-Воронеж
 
Сергей Мосякин. Коллективное сознательное Тренды в дизайне как результат соци...
Сергей Мосякин. Коллективное сознательное Тренды в дизайне как результат соци...Сергей Мосякин. Коллективное сознательное Тренды в дизайне как результат соци...
Сергей Мосякин. Коллективное сознательное Тренды в дизайне как результат соци...РИФ-Воронеж
 
Сергей Подшивалин. Дизайн мобильных приложений. РИФ-Воронеж 2016
Сергей Подшивалин. Дизайн мобильных приложений. РИФ-Воронеж 2016Сергей Подшивалин. Дизайн мобильных приложений. РИФ-Воронеж 2016
Сергей Подшивалин. Дизайн мобильных приложений. РИФ-Воронеж 2016РИФ-Воронеж
 
Андрей Парфенов. Фотоконтент на сайте. РИФ-Воронеж 2016
Андрей Парфенов. Фотоконтент на сайте. РИФ-Воронеж 2016Андрей Парфенов. Фотоконтент на сайте. РИФ-Воронеж 2016
Андрей Парфенов. Фотоконтент на сайте. РИФ-Воронеж 2016РИФ-Воронеж
 
Кирилл Готовцев. Чем настоящая реклама отличается от всей этой фигни. Выступл...
Кирилл Готовцев. Чем настоящая реклама отличается от всей этой фигни. Выступл...Кирилл Готовцев. Чем настоящая реклама отличается от всей этой фигни. Выступл...
Кирилл Готовцев. Чем настоящая реклама отличается от всей этой фигни. Выступл...РИФ-Воронеж
 
Александр Кириллов. Веб разработка: Что такое Ruby On Rails. РИФ-Воронеж 2016
Александр Кириллов. Веб разработка: Что такое Ruby On Rails. РИФ-Воронеж 2016Александр Кириллов. Веб разработка: Что такое Ruby On Rails. РИФ-Воронеж 2016
Александр Кириллов. Веб разработка: Что такое Ruby On Rails. РИФ-Воронеж 2016РИФ-Воронеж
 
Виктория Логачева. Организация работы с удалённой командой. РИФ-Воронеж 2016
Виктория Логачева. Организация работы с удалённой командой. РИФ-Воронеж 2016Виктория Логачева. Организация работы с удалённой командой. РИФ-Воронеж 2016
Виктория Логачева. Организация работы с удалённой командой. РИФ-Воронеж 2016РИФ-Воронеж
 
Владимир Страхов. Ruby On Rails. Перед тем как начать. РИФ-Воронеж 2016
Владимир Страхов. Ruby On Rails. Перед тем как начать. РИФ-Воронеж 2016Владимир Страхов. Ruby On Rails. Перед тем как начать. РИФ-Воронеж 2016
Владимир Страхов. Ruby On Rails. Перед тем как начать. РИФ-Воронеж 2016РИФ-Воронеж
 
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...РИФ-Воронеж
 
Ярослав Шуваев. UX-дизайнер: Основы профессии и тренды. РИФ-Воронеж 2016
Ярослав Шуваев. UX-дизайнер: Основы профессии и тренды. РИФ-Воронеж 2016Ярослав Шуваев. UX-дизайнер: Основы профессии и тренды. РИФ-Воронеж 2016
Ярослав Шуваев. UX-дизайнер: Основы профессии и тренды. РИФ-Воронеж 2016РИФ-Воронеж
 
Никита Калиновский. Безопасность интернета вещей. РИФ-Воронеж 2016
Никита Калиновский. Безопасность интернета вещей. РИФ-Воронеж 2016Никита Калиновский. Безопасность интернета вещей. РИФ-Воронеж 2016
Никита Калиновский. Безопасность интернета вещей. РИФ-Воронеж 2016РИФ-Воронеж
 
Оценка дизайнеру
Оценка дизайнеруОценка дизайнеру
Оценка дизайнеруvolokos
 
Василий Бернштейн. Тенденции мобильных платежей – NFC & In-App Payments. РИФ-...
Василий Бернштейн. Тенденции мобильных платежей – NFC & In-App Payments. РИФ-...Василий Бернштейн. Тенденции мобильных платежей – NFC & In-App Payments. РИФ-...
Василий Бернштейн. Тенденции мобильных платежей – NFC & In-App Payments. РИФ-...РИФ-Воронеж
 
Звиад Кардава. Интернет вещей - модное слово или реальность? РИФ-Воронеж 2016
Звиад Кардава. Интернет вещей - модное слово или реальность? РИФ-Воронеж 2016Звиад Кардава. Интернет вещей - модное слово или реальность? РИФ-Воронеж 2016
Звиад Кардава. Интернет вещей - модное слово или реальность? РИФ-Воронеж 2016РИФ-Воронеж
 

Viewers also liked (20)

Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
 Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва  Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
 
Никита Михеенков. Контент и продажи. РИФ-Воронеж 2016
Никита Михеенков. Контент и продажи. РИФ-Воронеж 2016Никита Михеенков. Контент и продажи. РИФ-Воронеж 2016
Никита Михеенков. Контент и продажи. РИФ-Воронеж 2016
 
Александра Литманович. Интернет-маркетинг: инструкция по применению. РИФ-Воро...
Александра Литманович. Интернет-маркетинг: инструкция по применению. РИФ-Воро...Александра Литманович. Интернет-маркетинг: инструкция по применению. РИФ-Воро...
Александра Литманович. Интернет-маркетинг: инструкция по применению. РИФ-Воро...
 
Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016
Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016
Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016
 
Денис Кортунов. Беспощадный редизайн приложения. РИФ-Воронеж 2016
Денис Кортунов. Беспощадный редизайн приложения. РИФ-Воронеж 2016Денис Кортунов. Беспощадный редизайн приложения. РИФ-Воронеж 2016
Денис Кортунов. Беспощадный редизайн приложения. РИФ-Воронеж 2016
 
Алексей Безымянный. Опыт применения сервисов дистанционных консультаций в гос...
Алексей Безымянный. Опыт применения сервисов дистанционных консультаций в гос...Алексей Безымянный. Опыт применения сервисов дистанционных консультаций в гос...
Алексей Безымянный. Опыт применения сервисов дистанционных консультаций в гос...
 
Martins Legzdins. Завтра было вчера. РИФ-Воронеж 2016
Martins Legzdins. Завтра было вчера. РИФ-Воронеж 2016Martins Legzdins. Завтра было вчера. РИФ-Воронеж 2016
Martins Legzdins. Завтра было вчера. РИФ-Воронеж 2016
 
Сергей Мосякин. Коллективное сознательное Тренды в дизайне как результат соци...
Сергей Мосякин. Коллективное сознательное Тренды в дизайне как результат соци...Сергей Мосякин. Коллективное сознательное Тренды в дизайне как результат соци...
Сергей Мосякин. Коллективное сознательное Тренды в дизайне как результат соци...
 
Сергей Подшивалин. Дизайн мобильных приложений. РИФ-Воронеж 2016
Сергей Подшивалин. Дизайн мобильных приложений. РИФ-Воронеж 2016Сергей Подшивалин. Дизайн мобильных приложений. РИФ-Воронеж 2016
Сергей Подшивалин. Дизайн мобильных приложений. РИФ-Воронеж 2016
 
Андрей Парфенов. Фотоконтент на сайте. РИФ-Воронеж 2016
Андрей Парфенов. Фотоконтент на сайте. РИФ-Воронеж 2016Андрей Парфенов. Фотоконтент на сайте. РИФ-Воронеж 2016
Андрей Парфенов. Фотоконтент на сайте. РИФ-Воронеж 2016
 
Кирилл Готовцев. Чем настоящая реклама отличается от всей этой фигни. Выступл...
Кирилл Готовцев. Чем настоящая реклама отличается от всей этой фигни. Выступл...Кирилл Готовцев. Чем настоящая реклама отличается от всей этой фигни. Выступл...
Кирилл Готовцев. Чем настоящая реклама отличается от всей этой фигни. Выступл...
 
Александр Кириллов. Веб разработка: Что такое Ruby On Rails. РИФ-Воронеж 2016
Александр Кириллов. Веб разработка: Что такое Ruby On Rails. РИФ-Воронеж 2016Александр Кириллов. Веб разработка: Что такое Ruby On Rails. РИФ-Воронеж 2016
Александр Кириллов. Веб разработка: Что такое Ruby On Rails. РИФ-Воронеж 2016
 
Виктория Логачева. Организация работы с удалённой командой. РИФ-Воронеж 2016
Виктория Логачева. Организация работы с удалённой командой. РИФ-Воронеж 2016Виктория Логачева. Организация работы с удалённой командой. РИФ-Воронеж 2016
Виктория Логачева. Организация работы с удалённой командой. РИФ-Воронеж 2016
 
Владимир Страхов. Ruby On Rails. Перед тем как начать. РИФ-Воронеж 2016
Владимир Страхов. Ruby On Rails. Перед тем как начать. РИФ-Воронеж 2016Владимир Страхов. Ruby On Rails. Перед тем как начать. РИФ-Воронеж 2016
Владимир Страхов. Ruby On Rails. Перед тем как начать. РИФ-Воронеж 2016
 
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
 
Ярослав Шуваев. UX-дизайнер: Основы профессии и тренды. РИФ-Воронеж 2016
Ярослав Шуваев. UX-дизайнер: Основы профессии и тренды. РИФ-Воронеж 2016Ярослав Шуваев. UX-дизайнер: Основы профессии и тренды. РИФ-Воронеж 2016
Ярослав Шуваев. UX-дизайнер: Основы профессии и тренды. РИФ-Воронеж 2016
 
Никита Калиновский. Безопасность интернета вещей. РИФ-Воронеж 2016
Никита Калиновский. Безопасность интернета вещей. РИФ-Воронеж 2016Никита Калиновский. Безопасность интернета вещей. РИФ-Воронеж 2016
Никита Калиновский. Безопасность интернета вещей. РИФ-Воронеж 2016
 
Оценка дизайнеру
Оценка дизайнеруОценка дизайнеру
Оценка дизайнеру
 
Василий Бернштейн. Тенденции мобильных платежей – NFC & In-App Payments. РИФ-...
Василий Бернштейн. Тенденции мобильных платежей – NFC & In-App Payments. РИФ-...Василий Бернштейн. Тенденции мобильных платежей – NFC & In-App Payments. РИФ-...
Василий Бернштейн. Тенденции мобильных платежей – NFC & In-App Payments. РИФ-...
 
Звиад Кардава. Интернет вещей - модное слово или реальность? РИФ-Воронеж 2016
Звиад Кардава. Интернет вещей - модное слово или реальность? РИФ-Воронеж 2016Звиад Кардава. Интернет вещей - модное слово или реальность? РИФ-Воронеж 2016
Звиад Кардава. Интернет вещей - модное слово или реальность? РИФ-Воронеж 2016
 

Similar to Денис Неклюдов. Держи свое приложение на волне новинок. РИФ-Воронеж 2016

Как навести порядок в коде вашего web-приложения, Андрей Чебукин
Как навести порядок в коде вашего web-приложения, Андрей Чебукин Как навести порядок в коде вашего web-приложения, Андрей Чебукин
Как навести порядок в коде вашего web-приложения, Андрей Чебукин Sigma Software
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationAndrii Dzynia
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, MicrosoftYandex
 
Что нового в Android O (Grodno HTP)
Что нового в Android O (Grodno HTP)Что нового в Android O (Grodno HTP)
Что нового в Android O (Grodno HTP)Kirill Rozov
 
Обзор платформы B4
Обзор платформы B4Обзор платформы B4
Обзор платформы B4Bars Group
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Сквозное управление доступом - от пользователя и дальше
Сквозное управление доступом - от пользователя и дальшеСквозное управление доступом - от пользователя и дальше
Сквозное управление доступом - от пользователя и дальшеCisco Russia
 
Стабильны ли ваши приложения в облаках?
Стабильны ли ваши приложения в облаках?Стабильны ли ваши приложения в облаках?
Стабильны ли ваши приложения в облаках?Yandex
 
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft UkraineHTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft UkraineVolha Banadyseva
 
Как легко и быстро поднять стартап на облаке
Как легко и быстро поднять стартап на облакеКак легко и быстро поднять стартап на облаке
Как легко и быстро поднять стартап на облакеTatiana Smetanina
 
Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js for enterprise 2021 - JavaScript Fwdays 3Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js for enterprise 2021 - JavaScript Fwdays 3Timur Shemsedinov
 
Защита центров обработки данных. Механизмы безопасности для классической фабр...
Защита центров обработки данных. Механизмы безопасности для классической фабр...Защита центров обработки данных. Механизмы безопасности для классической фабр...
Защита центров обработки данных. Механизмы безопасности для классической фабр...Cisco Russia
 
МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5Dima Dzuba
 
13 расширенные возможности корпоративных приложений, основы субд
13 расширенные возможности корпоративных приложений, основы субд13 расширенные возможности корпоративных приложений, основы субд
13 расширенные возможности корпоративных приложений, основы субдKewpaN
 

Similar to Денис Неклюдов. Держи свое приложение на волне новинок. РИФ-Воронеж 2016 (20)

Лекция Android
Лекция AndroidЛекция Android
Лекция Android
 
Как навести порядок в коде вашего web-приложения, Андрей Чебукин
Как навести порядок в коде вашего web-приложения, Андрей Чебукин Как навести порядок в коде вашего web-приложения, Андрей Чебукин
Как навести порядок в коде вашего web-приложения, Андрей Чебукин
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
Android service
Android serviceAndroid service
Android service
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
 
Что нового в Android O (Grodno HTP)
Что нового в Android O (Grodno HTP)Что нового в Android O (Grodno HTP)
Что нового в Android O (Grodno HTP)
 
Обзор платформы B4
Обзор платформы B4Обзор платформы B4
Обзор платформы B4
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Сквозное управление доступом - от пользователя и дальше
Сквозное управление доступом - от пользователя и дальшеСквозное управление доступом - от пользователя и дальше
Сквозное управление доступом - от пользователя и дальше
 
Стабильны ли ваши приложения в облаках?
Стабильны ли ваши приложения в облаках?Стабильны ли ваши приложения в облаках?
Стабильны ли ваши приложения в облаках?
 
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft UkraineHTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
 
HTML 5
HTML 5HTML 5
HTML 5
 
Как легко и быстро поднять стартап на облаке
Как легко и быстро поднять стартап на облакеКак легко и быстро поднять стартап на облаке
Как легко и быстро поднять стартап на облаке
 
Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js for enterprise 2021 - JavaScript Fwdays 3Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js for enterprise 2021 - JavaScript Fwdays 3
 
JSSDK: Начало
JSSDK: НачалоJSSDK: Начало
JSSDK: Начало
 
Защита центров обработки данных. Механизмы безопасности для классической фабр...
Защита центров обработки данных. Механизмы безопасности для классической фабр...Защита центров обработки данных. Механизмы безопасности для классической фабр...
Защита центров обработки данных. Механизмы безопасности для классической фабр...
 
МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5
 
13 расширенные возможности корпоративных приложений, основы субд
13 расширенные возможности корпоративных приложений, основы субд13 расширенные возможности корпоративных приложений, основы субд
13 расширенные возможности корпоративных приложений, основы субд
 
Deep Dive in Magento DI
Deep Dive in Magento DIDeep Dive in Magento DI
Deep Dive in Magento DI
 

Денис Неклюдов. Держи свое приложение на волне новинок. РИФ-Воронеж 2016

  • 1. Держи свое приложение на волне новинок Денис Неклюдов Google Developer Expert Ведущий подкаста Android Dev Разработчик в
  • 2.
  • 3. А там что-то изменилось?
  • 5. Project Svelte - больше ограничений API < 24 API ≥ 24 Manifest API ≥ 24 Runtime CONNECTIVITY_ACTION разрешен запрещен разрешен ACTION_NEW_PICTURE ACTION_NEW_VIDEO запрещен запрещен запрещен
  • 6. Экономим трафик пользователя Data Saver Mode – ограничение фонового потока данных и не только. ConnectivityManager.getRestrictBackgroundStatus(): RESTRICT_BACKGROUND_STATUS_DISABLED RESTRICT_BACKGROUND_STATUS_ENABLED - нужно максимально снизить использование данных сети. Фоновые запросы к сети могут быть запрещены. RESTRICT_BACKGROUND_STATUS_WHITELISTED ConnectivityManager.isActiveNetworkMetered(): - ограничиваем использование сети и в этом случае.
  • 8. Для быстрой отрисовки графики Поддержка Vulkan API OpenGL™ ES 3.2 API Улучшения SurfaceView
  • 9. Multi-window Все Activity, кроме той, с которой пользователь только что взаимодействовал находятся в состоянии paused: - не останавливайте воспроизведение по onPause() android:resizeableActivity = "true" – меняет размер всех activity в стеке resizeableActivity – для API ≥ 24 по-умолчанию true - Fullscreen запрещен - изменения атрибута screenOrientation игнорируются
  • 11. Multi-window Узнаем о многооконном режиме: - isInMultiWindowMode() - onMultiWindowModeChanged() Не забываем про поддержку drag and drop!
  • 12. Ответ в уведомлениях RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY) .setLabel(“Ответить”) .build(); Notification.Action.Builder(R.drawable.ic_reply_icon, getString(R.string.label), replyPendingIntent) .addRemoteInput(remoteInput) Notification.Builder(mContext) .addAction(action))
  • 13. Отслеживание ответа в уведомлениях Activity, определенная в PendingIntent ловит событие и обрабатывает его. Bundle remoteInput = RemoteInput.getResultsFromIntent(intent); private CharSequence getMessageText(Intent intent) { Bundle remoteInput = RemoteInput.getResultsFromIntent(intent); return remoteInput.getCharSequence(KEY_TEXT_REPLY); } Чтобы убрать прогресс в уведомлении, нужно удалить текущее уведомление или обновить его.
  • 14. Чат в уведомлениях Notification notification = new Notification.Builder() .setStyle(new Notification.MessagingStyle("Me") .setConversationTitle("Team lunch") .addMessage("Hi", timestamp1, null) .addMessage("Not much", timestamp3, null) .addMessage("How about lunch?", timestamp4, "Coworker")) .build();
  • 15. Группировка уведомлений NotificationCompat.Builder(mContext) .setStyle(new NotificationCompat.InboxStyle() .addLine("Alex Faaborg Check this out") .addLine("Jeff Chang Launch Party") .setBigContentTitle("2 new messages") .setSummaryText("johndoe@gmail.com")) .setGroup(GROUP_KEY_EMAILS) .setGroupSummary(true)
  • 16. Quick Tile API Для добавления своего значка быстрого доступа: Создаем свой сервис наследник от TileService. Можем запускать Runnable и отправлять Intent. Можем менять иконку и текст. Не можем раскрывать настройку на полный экран. https://medium.com/@KieronQuinn/quick-settings-in-android-n-ea8ad8ce2eea
  • 17. Шире возможности работы с телефоном Добавлен черный список абонентов. android.provider.BlockedNumberContract Появилась возможность дефолтному приложению для звонков: Сбрасывать входящие Удалять звонок из истории Скрывать уведомление о входящем звонке android.telecom.CallScreeningService
  • 18. Изменилась стратегия поиска подходящей строки: Try fr_CH => Fail. Try fr => Fail. Try children of fr => fr_FR. Use fr_FR Добавилась вторая дефолтная локаль пользователя (LocaleList.getDefault()): Try fr_CH => Fail. Try fr => Fail. Try children of fr => Fail. Try it_CH => Fail. Try it => Fail. Try children of it => it_IT. Use it_IT Улучшены форматтеры текста: format(locale, "Choose a %d-digit PIN", 4) Улучшения локализации
  • 19. Больше улучшений ввода Встроенный ICU4J (нет поддержки ICU4C) Новые эмодзи и расширенная их поддержка было: стало:
  • 20. WebView Если установлен Chrome - будет использоваться он вместо WebView. Можно запустить в отдельном процессе. Теперь контекст JavaScript будет сброшен при загрузке новой странице Доступ к геолокации только при HTTPS соединении Доступ к новым бетам WebView
  • 21. Android TV Запись телепередач вашего приложения через TV recording API. Возможность показывать “картинку-в-картинке”.
  • 22. Direct Boot Чтобы приложение могло работать до первой разблокировки устройства, на котором включено шифрование: <receiver android:directBootAware="true" > <intent-filter> <action android:name="android.intent.action.ACTION_LOCKED_BOOT_COMPLETED" /> appContext.createDeviceProtectedStorageContext() - для доступа к ресурсам, SP и БД directBootContext.openFileInput(appDataFilename) - для доступа к файлам Context.moveSharedPreferencesFrom() и Context.moveDatabaseFrom() - для миграции
  • 23. Улучшения в безопасности Key Attestation Network Security Config Default Trusted Certificate Authority Debug-only overrides Cleartext traffic opt-out Certificate pinning APK Signature Scheme v2 Scoped Directory Access
  • 24. Scoped Directory Access StorageManager sm = (StorageManager)getSystemService(Context.STORAGE_SERVICE); StorageVolume volume = sm.getPrimaryStorageVolume(); Intent intent = volume.createAccessIntent(Environment.DIRECTORY_PICTURES); startActivityForResult(intent, request_code); if (requestCode == OPEN_DIRECTORY_REQUEST_CODE && resultCode == Activity.RESULT_OK) { getContentResolver().takePersistableUriPermission(data.getData(), Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); updateDirectoryEntries(data.getData()); }
  • 25. Ближе к десктопам Keyboard Shortcuts Helper для отображения всех хоткеев приложения Custom Pointer API для изменения иконки курсора
  • 26. Важно также иметь ввиду Sustained Performance API – запрос на долгую нагруженную фоновую работу Улучшения в Print Service – больше возможности для кастомизации FrameMetricsListener API – измеряем производительность на продакшен- сборках Virtual Files – доступ к облачным файлам, как к обычным
  • 27. Не API, но нужно знать
  • 28. Рантайм на три буквы ART имеет теперь не только Ahead of Time, но и Just in Time компиляцию. По заверениям разработчиков это повышает качество оптимизаций, сокращая использование RAM и ускоряя работу приложения. Также это избавляет от шага оптимизации при обновлении системы.
  • 29. Динамическое изменение DPI Теперь пользователь может изменить плотность DPI без рута и перезагрузки.
  • 30. Больше никакой линковки к нативным либам обращения к приватным нативным библиотекам API < 24 API = 24 API > 24 NDK Public разрешен разрешен разрешен NDK Private не удаленные тост и лог с предупреждением тост и лог с предупреждением ошибка NDK Private удаленные ошибка ошибка ошибка
  • 31. Спасибо за внимание! Денис Неклюдов Подкаст: apptractor.ru/androidDev telegram: @nekdenis nekdenis@gmail.com