Содержание
- 2. Введение в курс
- 3. Цели курса Изучить вопросы и проблемы, связанные с разработкой клиент-серверных приложений Изучить наиболее действенные и популярные
- 4. Формат курса Занятие – 2-2,5 часа Лекция – 60-80 минут Практика – 40-60 минут Дополнительная лекция
- 5. Рассматриваемые темы Обработка смены конфигурации в Activity Классические паттерны A/B/C для обеспечения клиент-серверного взаимодействия Фреймворк RxJava
- 6. Рассматриваемые темы Паттерн MVP Unit-тестирование Android-приложений UI-тестирование Android-приложений Фреймворк DataBinding и его использование в паттерне MVVM
- 7. Дополнительные темы Проблема Backpressure в RxJava и способы ее решения Библиотека Google Agera для построения архитектуры
- 8. Командный проект После 5-ого занятия Команды по 3 человека Выбор идеи проекта https://github.com/toddmotto/public-apis Планирование задач по
- 9. Введение в архитектуру клиент-серверных приложений
- 10. Зачем? От создателей “и так сойдет”
- 11. 2007 2008
- 12. Так все же почему? Крайне тяжело поддерживать Невозможно писать Unit-тесты
- 13. MVC как AAA (Activity, Activity, Activity)
- 14. 2014 - пора улучшить ситуацию Концепция Material Design на конференции Google I/O
- 15. Fernando Cejas 2) Architecting Android...The clean way? http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/
- 16. Хорошая архитектура Поддерживаемая, удобная, расширяемая и много других красивых прилагательных Позволяет написание тестов
- 17. Много красивых прилагательных Модульность Четкое именование Короткие функции и классы WTF / min -> 0
- 18. Тестирование Unit-тесты для бизнес-логики Минимум зависимостей от Android-классов в тестируемых модулях + Интеграционные тесты
- 19. Основные задачи при разработке клиент-серверных приложений
- 20. Клиент-серверные приложения Организация клиент-серверного взаимодействия Обеспечение возможности тестирования классов, содержащих бизнес-логику приложения Это и есть основные
- 21. Клиент-серверное взаимодействие Обработка ошибок Управление множеством запросов Корректное управление закрытием приложения
- 22. Обеспечение возможности тестирования Модульность классов Минимальное число зависимостей от классов Android Dependency Injection
- 23. Обработка смены конфигурации
- 24. Проблемы Все поля в Activity уничтожаются при пересоздании Activity – нужно уметь восстанавливать их Нельзя повторно
- 25. Запрет на смену ориентации Поддержка только одной ориентации в приложении часто сказывается не лучшим образом на
- 26. Ручная обработка смены конфигурации
- 27. Ручная обработка смены конфигурации Система автоматически не меняет ресурсы (например, языковые ресурсы или ресурсы, зависящие от
- 28. Сохранение состояния в Bundle
- 29. Сохранение состояния в Bundle
- 30. Сохранение состояния в Bundle Нельзя сохранять большие данные Вносит дополнительную непростую логику
- 31. Retain Fragment
- 32. Retain Fragment
- 33. Retain Fragment
- 34. Retain Fragment Нужна аккуратность в использовании ссылок на Activity / Context При закрытии приложения уничтожается
- 35. Loader Класс для загрузки данных Переживает пересоздание Activity Управляется специальным классом LoaderManager
- 36. Loader
- 37. LoaderManager public abstract Loader initLoader(int id, Bundle args, LoaderManager.LoaderCallbacks callback); public abstract Loader restartLoader(int id, Bundle
- 38. LoaderManager.LoaderCallbacks public interface LoaderCallbacks { public Loader onCreateLoader(int id, Bundle args); public void onLoadFinished(Loader loader, D
- 39. LoaderManager.LoaderCallbacks
- 40. Запускаем работу лоадера
- 41. LoaderManager public abstract Loader initLoader(int id, Bundle args, LoaderManager.LoaderCallbacks callback); public abstract Loader restartLoader(int id, Bundle
- 42. Загружаем данные в лоадере
- 43. Loader
- 44. Loader protected void onStartLoading() { } protected void onForceLoad() { } protected void onStopLoading() { }
- 45. Создаем свой лоадер
- 46. Создаем свой лоадер
- 47. Загружаем данные
- 48. Создаем свой лоадер
- 49. Loader При закрытии приложения уничтожается Неудобно обрабатывать ошибки Много кода Больше примеров в статье
- 50. Практика
- 51. Погода в нескольких городах Проект LoaderWeather. Описание задачи в файле ru.gdgkazan.simpleweather.screen.weatherlist.WeatherListActivity Нужно загрузить погоду во всех
- 53. Скачать презентацию