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