Остановка и продолжение потока

Ответить
varlok3000
Сообщения: 16
Зарегистрирован: 03 авг 2013, 22:55

Остановка и продолжение потока

Сообщение varlok3000 » 08 фев 2015, 20:11

Пишу программу в одной из функций которой предусмотрено последовательное выполнение произвольного количества таймеров обратного отчета (к примеру: отсчитал 5 сек, потом 1 минуту, потом 1 минуту 30 сек и т.д.) с отображение обраного отсчета на экране, причем эти интервалы задаются пользователем. С начала реализовал в цикле "for" для каждого отрезка времени с применением CountDownTimer, но экземпляров СountDownTimer создавалось ровно столько, сколько было циклов, и каждый из этих экземпляров вел свой отсчет и пытался отобразить его на экране. В итоге - чихорда цифр.
Сейчас пробую через AsyncTask. Создается экземпляр своего класса реализующего AsyncTask в который в качестве параметра передается ArrayList <> наборов времени (в миллисекундах).
В связи с чем вопрос: необходимо добавить также возможность приостановить таймер с возможностью дальнейшего возобновления его работы кнопками из основного потока, подскажите как правильно это реализовать?
Пробовал через AsyncTask.wait / AsyncTask.notify по нажатию на кнопки, в итоге получал зависание основного потока. Какие будут предложения? Заранее благодарен за помощь)

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Остановка и продолжение потока

Сообщение KamiSempai » 09 фев 2015, 14:09

varlok3000 писал(а):Какие будут предложения?
Запускать следующий таймер только при завершении предыдущего.
И вот еще кое что, в качестве бонуса: viewtopic.php?f=39&t=5446&p=39558&hilit ... ger#p39558
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

varlok3000
Сообщения: 16
Зарегистрирован: 03 авг 2013, 22:55

Re: Остановка и продолжение потока

Сообщение varlok3000 » 09 фев 2015, 20:52

Спасибо за бонус) Учту) Но я отказался от использования CountDownTimer, т.к. тот не совсем полностью подходит для моей цели.

И прошу прощения, я наверно не совсем понятно сформулировал вопрос: надо чтобы таймер по нажатию на "паузу" замирал, а потом продолжал отчет. Пробовал через AsyncTask.wait / AsyncTask.notify по нажатию на кнопки, клик на которые обрабатываются в основном потоке ( по клику "пауза"выполняется метод AsyncTask.wait, по клику "продолжить" AsyncTask.notify ) , в итоге получаю зависание основного потока. Что я не так делаю? Как заставить ждать AsyncTask?

Ответить