Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
52 слайда
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
1.42 MB
Просмотров:
89
Скачиваний:
1
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![Василов Артур Android](/documents_6/4d8266b215f830ba911030fec2b923be/img0.jpg)
Содержание слайда: Василов Артур
Android Developer at e-Legion
Google Developers Group Kazan
№2 слайд![Введение в курс](/documents_6/4d8266b215f830ba911030fec2b923be/img1.jpg)
Содержание слайда: Введение в курс
№3 слайд![Цели курса Изучить вопросы и](/documents_6/4d8266b215f830ba911030fec2b923be/img2.jpg)
Содержание слайда: Цели курса
Изучить вопросы и проблемы, связанные с разработкой клиент-серверных приложений
Изучить наиболее действенные и популярные методы построения архитектуры приложений, а также научиться применять их на практике
№4 слайд![Формат курса Занятие - , часа](/documents_6/4d8266b215f830ba911030fec2b923be/img3.jpg)
Содержание слайда: Формат курса
Занятие – 2-2,5 часа
Лекция – 60-80 минут
Практика – 40-60 минут
Дополнительная лекция – 15-20 минут
Командная работа над финальным проектом
№5 слайд![Рассматриваемые темы](/documents_6/4d8266b215f830ba911030fec2b923be/img4.jpg)
Содержание слайда: Рассматриваемые темы
Обработка смены конфигурации в Activity
Классические паттерны A/B/C для обеспечения клиент-серверного взаимодействия
Фреймворк RxJava и его применение в Android-разработке
Принципы Clean Architecture и их применение в построении архитектуры приложений
№6 слайд![Рассматриваемые темы Паттерн](/documents_6/4d8266b215f830ba911030fec2b923be/img5.jpg)
Содержание слайда: Рассматриваемые темы
Паттерн MVP
Unit-тестирование Android-приложений
UI-тестирование Android-приложений
Фреймворк DataBinding и его использование в паттерне MVVM
№7 слайд![Дополнительные темы Проблема](/documents_6/4d8266b215f830ba911030fec2b923be/img6.jpg)
Содержание слайда: Дополнительные темы
Проблема Backpressure в RxJava и способы ее решения
Библиотека Google Agera для построения архитектуры приложений
Библиотека Mosby для построения архитектуры приложений
Методология TDD (test-driven development)
Dagger 2 как библиотека для реализации принципа Dependency Injection
№8 слайд![Командный проект После -ого](/documents_6/4d8266b215f830ba911030fec2b923be/img7.jpg)
Содержание слайда: Командный проект
После 5-ого занятия
Команды по 3 человека
Выбор идеи проекта https://github.com/toddmotto/public-apis
Планирование задач по проекту
Реализация проекта в команде, работа в Github
№9 слайд![Введение в архитектуру](/documents_6/4d8266b215f830ba911030fec2b923be/img8.jpg)
Содержание слайда: Введение в архитектуру клиент-серверных приложений
№10 слайд![Зачем? От создателей и так](/documents_6/4d8266b215f830ba911030fec2b923be/img9.jpg)
Содержание слайда: Зачем?
От создателей “и так сойдет”
№11 слайд![](/documents_6/4d8266b215f830ba911030fec2b923be/img10.jpg)
Содержание слайда: 2007 2008
№12 слайд![Так все же почему? Крайне](/documents_6/4d8266b215f830ba911030fec2b923be/img11.jpg)
Содержание слайда: Так все же почему?
Крайне тяжело поддерживать
Невозможно писать Unit-тесты
№13 слайд![MVC как AAA Activity,](/documents_6/4d8266b215f830ba911030fec2b923be/img12.jpg)
Содержание слайда: MVC как AAA (Activity, Activity, Activity)
№14 слайд![- пора улучшить ситуацию](/documents_6/4d8266b215f830ba911030fec2b923be/img13.jpg)
Содержание слайда: 2014 - пора улучшить ситуацию
Концепция Material Design на конференции Google I/O
№15 слайд![Fernando Cejas Architecting](/documents_6/4d8266b215f830ba911030fec2b923be/img14.jpg)
Содержание слайда: Fernando Cejas
2) Architecting Android...The clean way?
http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/
№16 слайд![Хорошая архитектура](/documents_6/4d8266b215f830ba911030fec2b923be/img15.jpg)
Содержание слайда: Хорошая архитектура
Поддерживаемая, удобная, расширяемая и много других красивых прилагательных
Позволяет написание тестов
№17 слайд![Много красивых прилагательных](/documents_6/4d8266b215f830ba911030fec2b923be/img16.jpg)
Содержание слайда: Много красивых прилагательных
Модульность
Четкое именование
Короткие функции и классы
WTF / min -> 0
№18 слайд![Тестирование Unit-тесты для](/documents_6/4d8266b215f830ba911030fec2b923be/img17.jpg)
Содержание слайда: Тестирование
Unit-тесты для бизнес-логики
Минимум зависимостей от Android-классов в тестируемых модулях
+ Интеграционные тесты
№19 слайд![Основные задачи при](/documents_6/4d8266b215f830ba911030fec2b923be/img18.jpg)
Содержание слайда: Основные задачи при разработке клиент-серверных приложений
№20 слайд![Клиент-серверные приложения](/documents_6/4d8266b215f830ba911030fec2b923be/img19.jpg)
Содержание слайда: Клиент-серверные приложения
Организация клиент-серверного взаимодействия
Обеспечение возможности тестирования классов, содержащих бизнес-логику приложения
№21 слайд![Клиент-серверное](/documents_6/4d8266b215f830ba911030fec2b923be/img20.jpg)
Содержание слайда: Клиент-серверное взаимодействие
Обработка ошибок
Управление множеством запросов
Корректное управление закрытием приложения
№22 слайд![Обеспечение возможности](/documents_6/4d8266b215f830ba911030fec2b923be/img21.jpg)
Содержание слайда: Обеспечение возможности тестирования
Модульность классов
Минимальное число зависимостей от классов Android
Dependency Injection
№23 слайд![Обработка смены конфигурации](/documents_6/4d8266b215f830ba911030fec2b923be/img22.jpg)
Содержание слайда: Обработка смены конфигурации
№24 слайд![Проблемы Все поля в Activity](/documents_6/4d8266b215f830ba911030fec2b923be/img23.jpg)
Содержание слайда: Проблемы
Все поля в Activity уничтожаются при пересоздании Activity – нужно уметь восстанавливать их
Нельзя повторно выполнять запросы и другие “тяжелые” задачи
№25 слайд![Запрет на смену ориентации](/documents_6/4d8266b215f830ba911030fec2b923be/img24.jpg)
Содержание слайда: Запрет на смену ориентации
Поддержка только одной ориентации в приложении часто сказывается не лучшим образом на UX
Не покрывает всех ситуаций, при которых Activity пересоздается
№26 слайд![Ручная обработка смены](/documents_6/4d8266b215f830ba911030fec2b923be/img25.jpg)
Содержание слайда: Ручная обработка смены конфигурации
№27 слайд![Ручная обработка смены](/documents_6/4d8266b215f830ba911030fec2b923be/img26.jpg)
Содержание слайда: Ручная обработка смены конфигурации
Система автоматически не меняет ресурсы (например, языковые ресурсы или ресурсы, зависящие от ориентации устройства)
№28 слайд![Сохранение состояния в Bundle](/documents_6/4d8266b215f830ba911030fec2b923be/img27.jpg)
Содержание слайда: Сохранение состояния в Bundle
№29 слайд![Сохранение состояния в Bundle](/documents_6/4d8266b215f830ba911030fec2b923be/img28.jpg)
Содержание слайда: Сохранение состояния в Bundle
№30 слайд![Сохранение состояния в Bundle](/documents_6/4d8266b215f830ba911030fec2b923be/img29.jpg)
Содержание слайда: Сохранение состояния в Bundle
Нельзя сохранять большие данные
Вносит дополнительную непростую логику
№31 слайд![Retain Fragment](/documents_6/4d8266b215f830ba911030fec2b923be/img30.jpg)
Содержание слайда: Retain Fragment
№32 слайд![Retain Fragment](/documents_6/4d8266b215f830ba911030fec2b923be/img31.jpg)
Содержание слайда: Retain Fragment
№33 слайд![Retain Fragment](/documents_6/4d8266b215f830ba911030fec2b923be/img32.jpg)
Содержание слайда: Retain Fragment
№34 слайд![Retain Fragment Нужна](/documents_6/4d8266b215f830ba911030fec2b923be/img33.jpg)
Содержание слайда: Retain Fragment
Нужна аккуратность в использовании ссылок на Activity / Context
При закрытии приложения уничтожается
№35 слайд![Loader Класс для загрузки](/documents_6/4d8266b215f830ba911030fec2b923be/img34.jpg)
Содержание слайда: Loader
Класс для загрузки данных
Переживает пересоздание Activity
Управляется специальным классом LoaderManager
№36 слайд![Loader](/documents_6/4d8266b215f830ba911030fec2b923be/img35.jpg)
Содержание слайда: Loader
№37 слайд![LoaderManager public abstract](/documents_6/4d8266b215f830ba911030fec2b923be/img36.jpg)
Содержание слайда: LoaderManager
public abstract <D> Loader<D> initLoader(int id, Bundle args, LoaderManager.LoaderCallbacks<D> callback);
public abstract <D> Loader<D> restartLoader(int id, Bundle args, LoaderManager.LoaderCallbacks<D> callback);
№38 слайд![LoaderManager.LoaderCallbacks](/documents_6/4d8266b215f830ba911030fec2b923be/img37.jpg)
Содержание слайда: LoaderManager.LoaderCallbacks
public interface LoaderCallbacks<D> {
public Loader<D> onCreateLoader(int id, Bundle args);
public void onLoadFinished(Loader<D> loader, D data);
public void onLoaderReset(Loader<D> loader);
}
№39 слайд![LoaderManager.LoaderCallbacks](/documents_6/4d8266b215f830ba911030fec2b923be/img38.jpg)
Содержание слайда: LoaderManager.LoaderCallbacks
№40 слайд![Запускаем работу лоадера](/documents_6/4d8266b215f830ba911030fec2b923be/img39.jpg)
Содержание слайда: Запускаем работу лоадера
№41 слайд![LoaderManager public abstract](/documents_6/4d8266b215f830ba911030fec2b923be/img40.jpg)
Содержание слайда: LoaderManager
public abstract <D> Loader<D> initLoader(int id, Bundle args, LoaderManager.LoaderCallbacks<D> callback);
public abstract <D> Loader<D> restartLoader(int id, Bundle args, LoaderManager.LoaderCallbacks<D> callback);
№42 слайд![Загружаем данные в лоадере](/documents_6/4d8266b215f830ba911030fec2b923be/img41.jpg)
Содержание слайда: Загружаем данные в лоадере
№43 слайд![Loader](/documents_6/4d8266b215f830ba911030fec2b923be/img42.jpg)
Содержание слайда: Loader
№44 слайд![Loader protected void](/documents_6/4d8266b215f830ba911030fec2b923be/img43.jpg)
Содержание слайда: Loader
protected void onStartLoading() {
}
protected void onForceLoad() {
}
protected void onStopLoading() {
}
№45 слайд![Создаем свой лоадер](/documents_6/4d8266b215f830ba911030fec2b923be/img44.jpg)
Содержание слайда: Создаем свой лоадер
№46 слайд![Создаем свой лоадер](/documents_6/4d8266b215f830ba911030fec2b923be/img45.jpg)
Содержание слайда: Создаем свой лоадер
№47 слайд![Загружаем данные](/documents_6/4d8266b215f830ba911030fec2b923be/img46.jpg)
Содержание слайда: Загружаем данные
№48 слайд![Создаем свой лоадер](/documents_6/4d8266b215f830ba911030fec2b923be/img47.jpg)
Содержание слайда: Создаем свой лоадер
№49 слайд![Loader При закрытии](/documents_6/4d8266b215f830ba911030fec2b923be/img48.jpg)
Содержание слайда: Loader
При закрытии приложения уничтожается
Неудобно обрабатывать ошибки
Много кода
№50 слайд![Практика](/documents_6/4d8266b215f830ba911030fec2b923be/img49.jpg)
Содержание слайда: Практика
№51 слайд![Погода в нескольких городах](/documents_6/4d8266b215f830ba911030fec2b923be/img50.jpg)
Содержание слайда: Погода в нескольких городах
Проект LoaderWeather. Описание задачи в файле ru.gdgkazan.simpleweather.screen.weatherlist.WeatherListActivity
Нужно загрузить погоду во всех городах при старте приложения
Сделать это наиболее быстрым способом (не каждый город последовательно)
Возможность обновления через SwipeRefreshLayout
Обработка пересоздания Activity
№52 слайд![Практика - RxJava Loader](/documents_6/4d8266b215f830ba911030fec2b923be/img51.jpg)
Содержание слайда: Практика 2 - RxJava Loader
Реализуйте обертку в виде лоадера над RxJava (над Observable) таким образом, чтобы можно было сохранить мощь использования RxJava и при этом воспользоваться средствами лоадеров для обработки пересоздания Activity