daniil-steperev / Semester_project-Planner-

A semester project of students Spbu Vinnik Ekaterina and Stepyrev Daniil
0 stars 0 forks source link

Проблема быстрой инициализации событий за данный промежуток времени #11

Open katevi opened 4 years ago

katevi commented 4 years ago

Описание проблемы: если заходить в календарь/раздел статистики, придется для каждого дня с момента использования планировщика высчитывать список актуальных на сегодня триггеров и актуальных событий. Если инициализировать за 2 года, например, придется 3652 раза делать какие-то сложные вычисления. Итог: календарь грузится 20 секунд (и система предлагает закрыть предложение, т.к. оно не отвечает), загружая всего 3 повторяющихся события. Решение: 1. Создание отдельной таблицы для уже прошедших событий, которая будет хранить абсолютно все события (и повторяющиеся тоже) и сервиса для общения с ней. При инициализации календаря/подсчете статистики надо будет делать только SELECT FROM таблица (один запрос в бд и все). Например, JournalEntry и JournalEntryService. 2. В JournalEntryService сделать метод, который будет возвращать все события (и повторяющиеся тоже) за определенный промежуток времени (нужно для статистики/если захотим инициализировать календарь не за 2 последних года, а за 3, 5, 100 или 1 год) 3. Создание EventTimer, который будет отслеживать событие, срок действия которого истек, и в фоновом режиме (важно!) добавлять его в журнал. 4. Загрузка событий по скроллу в календарь 5. Добавить для task-a начало? (не только конец времени, к которому он должен кончиться)

Итого список задач:

katevi commented 4 years ago

Подходящие статьи: https://developer.android.com/guide/background https://android.jlelse.eu/how-scheduling-work-with-new-android-jetpack-component-workmanager-852163f4825b