2. Обо мне
• Мельников Андрей
• Rambler & Co – Android developer
• Android apps: Rambler.Kassa, Afisha.ru,
Championat.com
3.
4. План рассказа
• О кэше
• Стратегии кэширования
• Инструменты для кэширования
• Кэш и RxJava
• Типы взаимодействия
• Сохранение и предварительная загрузка
• Внедрение кэша в архитектуру приложения
5. Причины использования кэша
• Работа без интернета
• Уменьшение времени ожидания
• Снижение сетевого трафика
• Упрощение сохранения состояния
6. Причины использования кэша
• Работа без интернета
• Уменьшение времени ожидания
• Снижение сетевого трафика
• Упрощение сохранения состояния
7. Причины использования кэша
• Работа без интернета
• Уменьшение времени ожидания
• Снижение сетевого трафика
• Упрощение сохранения состояния
8. Причины использования кэша
• Работа без интернета
• Уменьшение времени ожидания
• Снижение сетевого трафика
• Упрощение сохранения состояния
17. Сохранение POJO объектов
• Использование БД для кэширования
• SQLite
• StorIO, SQLBrite и прочее
• ORM (OrmLite, ActiveAndroid, GreenDAO)
• RxCache
18. Сохранение POJO объектов
• Использование БД для кэширования
• SQLite
• StorIO, SQLBrite и прочее
• ORM (OrmLite, ActiveAndroid, GreenDAO)
• RxCache
19. Сохранение POJO объектов
• Использование БД для кэширования
• SQLite
• StorIO, SQLBrite и прочее
• ORM (OrmLite, ActiveAndroid, GreenDAO)
• RxCache
20. Сохранение POJO объектов
• Использование БД для кэширования
• SQLite
• StorIO, SQLBrite и прочее
• ORM (OrmLite, ActiveAndroid, GreenDAO)
• RxCache
21. Реактивные приложения
• RxJava & RxAndroid - must have !
• Реактивное программирование — парадигма
программирования, ориентированная на
потоки данных и распространение изменений
22. Реактивные приложения
• RxJava & RxAndroid - must have !
• Реактивное программирование — парадигма
программирования, ориентированная на
потоки данных и распространение изменений
28. Кэш - онлайн
• Сначала кэш - потом онлайн
• concat(cache.getData(), api.getData())
• concatWith(Observable)
29. Кэш - онлайн
• Проблема «мигания» экрана
• Контроль ошибок
• Управление потоками
30. Кэш - онлайн
• Проблема «мигания» экрана
• Контроль ошибок
• Управление потоками
31. Кэш - онлайн
• Проблема «мигания» экрана
• Контроль ошибок
• Управление потоками
32. Кэш - онлайн (уведомление)
• Кэш – потом сообщение о новых данных из API
• Отдельно кэш, отдельно данные API с
уведомлением
• Отдельные Observable (параллельный или
последовательный запуск)
33. Кэш - онлайн (уведомление)
• Кэш – потом сообщение о новых данных из API
• Отдельно кэш, отдельно данные API с
уведомлением
• Отдельные Observable (параллельный или
последовательный запуск)
36. Предварительная загрузка
• Кейс 1: Получаем список статей и загружаем
каждую статью
• Кейс 2: Получаем список статей и загружаем
каждую популярную статью
• filter(article -> article.isPopular())
37. Предварительная загрузка
• Кейс 1: Получаем список статей и загружаем
каждую статью
• Кейс 2: Получаем список статей и загружаем
каждую популярную статью
• filter(article -> article.isPopular())
38. Предварительная загрузка
• Кейс 3: Настройки самых интересных рубрик
или типов данных
• filter(article ->
(Type.FOOTBALL).equals(article.getType()))
• Решаем проблему с нагрузкой
• Заставляем пользователей что то делать
39. Предварительная загрузка
• Кейс 3: Настройки самых интересных рубрик
или типов данных
• filter(article ->
(Type.FOOTBALL).equals(article.getType()))
• Решаем проблему с нагрузкой
• Заставляем пользователей что то делать