TIMED_WAITING для потока

У меня есть приложение, которое имеет дочерний поток выполняющий разные вычисления в фоне. При переходе приложения в режим нескольких окон, дочерний поток становится в состояние TIMED_WAITING. Не могу никак обратно запустит этот поток, чтобы он продолжил работу.

Создал свой класс от Thread. Кое-как переопределил метод sleep сделав его пустым. И с этим классом создал поток.
Так как sleep теперь ничего не делает, то состояние дочернего потока теперь всегда RUNNABLE. Однако, он после смены режима окна всёравно перестаёт работать.

Сделал по-другому.
Создал свой класс от Thread. Определил метод run() - где поток выполняет что ему нужно. При создании потока через new(), в аргументе конструктора, где должна быть ссылка на метод run() (через специальный класс) ставим null.
Ниже пишем:

@Override
public Object onRetainNonConfigurationInstance() {
      return thread;
    }

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  thread = (Thread0) getLastNonConfigurationInstance();
}

И всё заработало! Дочерний поток продолжает работать и после смены режима окна.

1 лайк