Advertisement

Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл Филимонов (Mail.Ru Group)

Ontico
Jun. 10, 2016
Advertisement

More Related Content

Slideshows for you(20)

Viewers also liked(19)

Advertisement

Similar to Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл Филимонов (Mail.Ru Group)(20)

More from Ontico(20)

Advertisement

Recently uploaded(20)

Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл Филимонов (Mail.Ru Group)

  1. Как мы данные готовили ORM и все-все-все в приложение Почта Mail.Ru Кирилл Филимонов Mail.Ru Group
  2. Что должно уметь почтовое приложение?
  3. Что должно уметь почтовое приложение? ● Написать письмо
  4. Что должно уметь почтовое приложение? ● Написать письмо ● Отправить письмо
  5. Что должно уметь почтовое приложение? ● Написать письмо ● Отправить письмо ● Получить письмо
  6. Что должно уметь почтовое приложение? ● Написать письмо ● Отправить письмо ● Получить письмо ● Сохранить письмо
  7. Что должно уметь почтовое приложение? ● Написать письмо ● Отправить письмо ● Получить письмо ● Сохранить письмо
  8. Что должно уметь почтовое приложение? ● Написать письмо ● Отправить письмо ● Получить письмо ● Сохранить письмА
  9. Domain Driven Slide
  10. Domain Driven Slide ● Письмо
  11. Domain Driven Slide ● Письмо ● Папка
  12. Domain Driven Slide ● Письмо ● Папка ● Тред
  13. Domain Driven Slide ● Письмо ● Папка ● Тред ● Аккаунт ● Фильтры ● Сессия ● Вложения ● Реклама ● Конфигурация ● ...
  14. Domain Driven Slide
  15. Domain Driven Slide Thread Presentation Presentation Presentation Message Message Message
  16. Domain Driven Slide
  17. Domain Driven Slide
  18. Domain Driven Slide
  19. Следствия ● Действие пользователя может порождать множество операций над данными ● Операции над данными могут зависеть друг от друга ● Операции могут занимать значительное время
  20. Что важно для пользователя
  21. Что важно для пользователя ● Отзывчивый UI
  22. Что важно для пользователя ● Отзывчивый UI ● Видеть результат операции, даже если она не успешна
  23. Что важно для пользователя ● Отзывчивый UI ● Видеть результат операции, даже если она не успешна ● Скорость выполнения операции
  24. Инструменты ● SQLite ● ORMLite ● Напильник
  25. Off-UI инструменты ● Thread
  26. Off-UI инструменты ● Thread ● AsyncTask
  27. Off-UI инструменты ● Thread ● AsyncTask ● Loader
  28. Off-UI инструменты ● Thread ● AsyncTask ● Loader ● AsyncQueryHandler
  29. ● обработка отмены задач Что может пойти не так
  30. ● обработка отмены задач ● orientation changes Что может пойти не так
  31. ● обработка отмены задач ● orientation changes ● CursorAdapter Что может пойти не так
  32. ● обработка отмены задач ● orientation changes ● CursorAdapter ● нотификация об изменениях Что может пойти не так
  33. java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread.
  34. Что выбрали мы
  35. Операция над данными ● Асинхронная операция — шаблон Command ● Операция над сущностями БД:
  36. Группа операций ● Шаблон Composer
  37. Команда для Database пула
  38. SQLite и ORMLite: транзакции ● SQLite
  39. SQLite и ORMLite: транзакции ● SQLite ● ORMLite
  40. Реализация команды с транзакцией ● Entity — базовый класс сущности ● ID - тип идентификатора ● тело request() будет выполнено в рамках транзакции
  41. Доступ к результам из UI “Ближе — проще”, unknown
  42. Доступ к результам из UI “Ближе — проще”, unknown ● закэшированы в памяти
  43. Доступ к результам из UI “Ближе — проще”, unknown ● закэшированы в памяти ● доступны из UI
  44. DAO cache && UI cache
  45. DAO object cache flow
  46. Операции, обновляющие кэш: ● dao.create(...) ● dao.query(...) ● dao.delete(...) DAO object cache flow
  47. Операции, НЕ обновляющие кэш: ● dao.update(...) ● dao.update(PreparedUpdate) DAO object cache flow
  48. DAO object cache flow CustomDao поддерживает обновления в ObjectCache
  49. Взаимодействие кэшей
  50. ● тип операции ● класс сущности ● объект Кэш операция
  51. Буферизация операций
  52. Буферизация нотификаций
  53. ● EntityManager Получение данных из кэша
  54. ● EntityManager ● getFromCache(...) Получение данных из кэша
  55. ● EntityManager ● getFromCache(...) ● loadMore(...) Получение данных из кэша
  56. ● EntityManager ● getFromCache(...) ● loadMore(...) ● refresh(...) Получение данных из кэша
  57. ● построение поисковых индексов в фоне ● индекс строится при изменении данных в объектном кэше ● передача построенного индекса в UI поток ● быстрый поиск в UI Поиск
  58. До: ● результаты > 1 сек ● progress bar на экране После: ● результаты ~20 мс ● дополняются серверными результами Поиск
  59. Контакты mailto: k.filimonov@corp.mail.ru twitter.com/ fallfromheight Кирилл Филимонов
Advertisement