Расписание занятий с отображением текущей пары по времени

Пишется приложение для вуза, техникума, колледжа и т д(не коммерческий). Нужно чтобы согласно текущему времени отображалась текущая пара, а когда наступает перемена, сразу переходила на другую. Сейчас отображает текущую пару, но после того как пара закончилась всё равно продолжает выделятся. Если обновить то отобразит 2 пару если она началась. Для этого написал условие, но не очень хорошее, в некоторых моментах не работает, пытался сделать через таймер таск, чтобы через каждые 5 минут вызывался этот адаптер для проверки условий. Но он работает так же не корректно. В адаптер приходят время начала пары и время конца пары. Думал сделать через планировщик по типу Firebase job dispatcher. Прошу натолкнуть на мысль...

введите сюда описание изображения

 final Schedule schedule = MSched.get(i);
    LocalTime time_start;
    LocalTime time_end;
    LocalTime time_now;
    if(!MSched.get(i).getLesson_time().equals("")) {
        time_start = LocalTime.parse(MSched.get(i).getLesson_time());
        time_end = LocalTime.parse(MSched.get(i).getLesson_time_end());
        time_now = LocalTime.now();
        String date = new SimpleDateFormat("E").format(new Date());

        if (MINUTES.between(time_start, time_now) > 0 && MINUTES.between(time_end, time_now) < 0 && date.equals(DayWeek)) {
            timer = new Timer();
            timerTask = new mTimerTask();
            timer.schedule(timerTask, 1000, 10000);
        //Изменение стилей для отображения пары которая идёт 

        } else {
            //Изменение стилей для отображения пар которые ещё не начались
        }
    }else {
           //Изменение стилей для отображения пар которые ещё не начались
    }
}
  public class mTimerTask extends TimerTask{
    ScheduleAdapter scheduleAdapter;
    @Override
    public void run() {
        scheduleAdapter = new ScheduleAdapter(Mcontext, MSched, DayWeek);
    }



}

Ответы (1 шт):

Автор решения: Domex

Решил вопрос через PostDelayed. Создал новый Runnable, задержку в минуту. При сворачивании или переключении между фрагментами поток ремувается.

handler.postDelayed(UpdateSched, 100000);

private Runnable UpdateSched = new Runnable() {
 @Override
  public void run() {
   adapter = new ScheduleAdapter(getContext(), list, DayWeek);
   recyclerView.setAdapter(adapter);
   handler.postDelayed(this, 100000);
 }
};
@Override
public void onPause() {
 super.onPause();
 handler.removeCallbacks(UpdateSched);
}
→ Ссылка