Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Post I/O 17

Post I/O 17

На прошедшем Google I/O было показано очень много различных новинок, библиотек и инструментов для разработчиков, и было сложно уследить за всем. Мы рассмотрим наиболее важные и актуальные моменты, чтобы вам было легко ориентироваться в последних событиях.

Artur Vasilov

May 27, 2017
Tweet

More Decks by Artur Vasilov

Other Decks in Programming

Transcript

  1. Android • Koltin • Android O • Android Architecture •

    Обновления support libraries • Android Studio 3.0 • Android Go • Улучшенная Google developer console • …
  2. Kotlin + Хороший язык, много синтаксического сахара + Наиболее совместим

    с Java + Чуть сокращает код - Все равно не язык от Google (!!) - Нужно обучать новых разработчиков, которые его не знают - Дополнительный рантайм - HDD
  3. Extension Functions fun <T> MutableList<T>.swap(index1: Int, index2: Int) { val

    tmp = this[index1] // 'this' corresponds to the list this[index1] = this[index2] this[index2] = tmp } fun testSwap() { val list = mutableListOf(5, 6, 7, 8) list.swap(0, 2) }
  4. Работа с коллекциями fun testLists() { val list = listOf(2,

    3, 16) list .map { it * 2 } .forEach { println(it) } }
  5. Работа с коллекциями fun testMaps() { val map = mapOf(

    1 to "Artur", 2 to "Kotlin", 3 to "GDG" ) for ((index, name) in map) { println("$index is for $name") } }
  6. When when (x) { 1 -> print("x is 1") 2

    -> print("x is 2") 3, 4 -> print("x is 3 or 4") in 5..10 -> print("x is 5, 6, 7, 8, 9, or 10") else -> print("x is out of range") }
  7. А также • Много других синтаксических конструкций • Лямбда-выражения •

    Перегрузка операторов • Именованные аргументы и аргументы по умолчанию • Корутины • …
  8. Picture-in-picture (PIP) • Переводим приложение в этот режим сами getActivity().enterPictureInPictureMode();

    • Только для видео!!! • Не останавливаем видео в onPause @Override public void onPause() { // If called while in PIP mode, do not pause playback if (isInPictureInPictureMode()) { // Continue playback ... } // If paused but not in PIP, pause playback if necessary ... }
  9. Notification channels Гибкий контроль над каналами уведомлений: • Важность •

    Звук • Световые индикаторы • Вибрация • Показ на локскрине • Скрыть показ уведомлений
  10. Еще про нотификации • При таргете Android O, нужно обязательно

    использовать каналы • Можно показывать “точки” для иконок приложений
  11. Android O • Картинка-в-картинке • Уведомления • Багфикс + не

    самые крупные фичи • Мы улучшили скорость работы и время работы батареи… What’s new in Android https://youtu.be/1N9KveJ-FU8
  12. Архитектурные компоненты • Android - кривой фреймворк • Новый велосипед

    от Google, а не от кого-то (Moxy / Mosby) • Набор новых саппорт библиотек в помощь
  13. Что нужно посмотреть Architecture Components: Improve Your App’s Design (Android

    Developers) https://www.youtube.com/watch?v=vOJCrbr144o Architecture Components - Introduction (Google I/O) https://www.youtube.com/watch?v=vOJCrbr144o
  14. Если кратко • Официальные рекомендации от Google • Заимствуют лучшие

    практики из Open Source • Все очень неплохо • Будет дорабатываться • Можно начинать пробовать :)
  15. LiveData public class LocationLiveData extends LiveData<Location> { private LocationManager locationManager;

    private SimpleLocationListener listener = //... private LocationLiveData(Context context) { locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); } @Override protected void onActive() { locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener); } @Override protected void onInactive() { locationManager.removeUpdates(listener); } }
  16. ViewModel • Класс, управляющий логикой экрана • Содержит в себе

    LiveData, которые инкапсулируют передачу данных для отображения пользователю • Переживает повороты экрана
  17. Activity / Fragment public class MoviesActivity extends LifecycleActivity { private

    MoviesViewModel viewModel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout. activity_movies); //... viewModel = ViewModelProviders. of(this).get(MoviesViewModel. class); viewModel.getMoviesList().observe( this, movies -> { // show movies }); } }
  18. ViewModel public class MoviesViewModel extends ViewModel { @Nullable private MutableLiveData<List<Movie>>

    moviesLiveData; @MainThread @NonNull LiveData<List<Movie>> getMoviesList() { if (moviesLiveData == null) { moviesLiveData = new MutableLiveData<>(); ApiFactory. getMoviesService().popularMovies() .map(MoviesResponse::getMovies) .subscribeOn(Schedulers. io()) .observeOn(AndroidSchedulers. mainThread()) .subscribe( moviesLiveData::setValue); } return moviesLiveData; } }
  19. Отображаем прогресс @NonNull private final MutableLiveData<Boolean> loadingLiveData = new MutableLiveData<>();

    @NonNull LiveData<Boolean> isLoading() { return loadingLiveData; } ApiFactory.getMoviesService().popularMovies() .doOnSubscribe(disposable -> loadingLiveData.postValue(true)) .doAfterTerminate(() -> loadingLiveData.postValue(false)) viewModel.isLoading().observe( this, isLoading -> { if (isLoading != null && isLoading) { mProgressDialog.show(getFragmentManager()); } else { mProgressDialog.cancel(); } });
  20. Room • Базируется на SQLite • Удобная и достаточно “умная”

    база данных • Надо иногда писать руками SQL • Идеальный выбор для того, кто не знает, что выбрать
  21. Еще ссылки Документация и туториал по новыми архитектурным библиотекам (пока,

    к сожалению, без семпла) https://developer.android.com/topic/libraries/architecture/guide.html Хорошая статья от Yonatan Levin https://medium.com/@yonatanvlevin/weighing-in-on-the-holy-architecture-war-my- take-on-architecture-components-31f7025e9c66 Статья на Medium с семплом (на котлине -_______-) https://medium.com/proandroiddev/android-architecture-components-cb1ea88d38 35
  22. Support libraries updates • Скачиваемые шрифты • Смайлики • Autosizing

    TextViews • … What’s new in Android Support Library https://youtu.be/V6-roIeNUY0
  23. Скачиваемые шрифты • Один файл шрифта на устройстве (кэшируется) •

    Поддержка шрифтов в xml • Поддержка шрифтов в layout editor в Android Studio • Работает через Android Support Library с помощью Google Play Services
  24. Autosizing TextViews • Автоматически подбирается лучший размер текста по размеру

    TextView • Можно задать фиксированный набор размеров • В support library
  25. Android Studio 3.0 Android Studio 3.0 Canary 1 https://www.youtube.com/watch?v=rHiA66zUv8c •

    Поддержка Kotlin • Поддержка Instant Apps • Улучшенные мониторы (RAM, Network) • Поддержка шрифтов • Анализатор .apk • Улучшенный эмулятор (с Google Play)
  26. Android Go • Оптимизированная версия Android для устройств, RAM которых

    <=1GB (стоят меньше ~$100) • Уменьшение трафика • Оптимизированные приложения от Google
  27. Резюмируя • Новые фичи - это хорошо, но это не

    главное • Ваше приложение должно: ◦ Работать на любом устройстве (и для любого размера экрана) ◦ Работать быстро ◦ Экономить батарею И это хорошо!
  28. TPU • Специально для ML • Специально для TensorFlow •

    Штука против Lee Sedol ===> • Cloud TPU!!
  29. TensorFlow Lite • Версия TensorFlow для мобильных устройств: Android, iOS,

    Raspberry PI • Позволяет загружать оптимизированные обученные модели • Android meets TensorFlow https://youtu.be/25ISTLhz0ys (со второй половины)
  30. What’s new in Firebase • Firebase + Fabric • Phone

    number auth • Performance monitoring • …
  31. Авторизация по номеру телефона • Все API от Firebase •

    10т авторизаций в минуту бесплатно • Круто!
  32. Performance monitoring • Время запуска • Время выполнения методов /

    HTTP запросов • Разделение по пользователям / странам и т.д. • Вся статистика в Firebase Console
  33. Assistant • Google Assistant на • С Google Home можно

    звонить • Еще больше интеграции (Google Lens, Photos и т.д.) • Больше языков (но не русского)
  34. Transactions with the Google Assistant Демонстрация возможностей https://youtu.be/LlgMcJBnNN8?t=55 Со второй

    половины доклада идут технические детали реализации
  35. Google Assistant Challenge https://developers.google.com/actions/challenge/ • До 31 августа • Один

    из призов - поездка на Google I/O 2018 Как сделать приложение для Google Assistant https://youtu.be/ZvyrvowZ4wQ
  36. VR / AR • Почти нет новостей • Новый шлем

    • Немного улучшили Tango • Больше девайсов с поддержкой VR / AR