Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Анимация ожидания окончания AsyncTask / 9 сообщений из 9, страница 1 из 1
11.04.2018, 16:31
    #39628564
Sp999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анимация ожидания окончания AsyncTask
Доброго времени суток всем!

Написал класс-наследник PostConnectionTask от AsyncTask, который делает запрос к сайту. Все работает как надо.
Хотелось бы как-то анимировать ожидание окончания задания.
Попробовал сделать еще одну AsyncTask:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
class WaitTask extends AsyncTask<Void, String, Void> {
	String prompt;
	String anim;
	public WaitTask(String prompt) {
		this.prompt = prompt;
		this.anim = " /";
	}
	@Override
	protected Void doInBackground(Void... params) {
		try {
			while(true) {
				if (isCancelled()) return null;
				TimeUnit.SECONDS.sleep(1);
				anim = anim.equals(" /") ? " \" : " /";
				publishProgress(anim);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	@Override
	protected void onProgressUpdate(String... values) {
		super.onProgressUpdate(values);
		txtWait.setText(prompt + values[0]);
	}
	@Override
	protected void onPostExecute(Void result) {
		super.onPostExecute(result);
	}
	@Override
	protected void onCancelled() {
		super.onCancelled();
		txtWait.setText("");
	}
}

Смысл в следующем: запустить WaitTask перед запуском PostConnectionTask, она будет постоянно анимировать текст на экране, а в методе onPostExecute класса PostConnectionTask вызвать WaitTask.cancel
Проблема в том, что WaitTask работает (текст двигается), но, видимо, не дает "подышать" задаче PostConnectionTask, ибо та никак не заканчивается.
Может кто знает, как это победить?
С уважением, Валера.
...
Рейтинг: 0 / 0
11.04.2018, 17:58
    #39628652
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анимация ожидания окончания AsyncTask
Sp999Может кто знает, как это победить?
Интервал увеличить хотя-бы до 100?
...
Рейтинг: 0 / 0
11.04.2018, 18:16
    #39628657
Sp999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анимация ожидания окончания AsyncTask
wadmanSp999Может кто знает, как это победить?
Интервал увеличить хотя-бы до 100?
Но ведь это же целая секунда. Т.е. анимация обновляется раз в секунду. Если я увеличу интервал до 100, то я просто утрачу весь желаемый эффект.
...
Рейтинг: 0 / 0
12.04.2018, 09:04
    #39628850
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анимация ожидания окончания AsyncTask
Sp999wadmanпропущено...

Интервал увеличить хотя-бы до 100?
Но ведь это же целая секунда. Т.е. анимация обновляется раз в секунду. Если я увеличу интервал до 100, то я просто утрачу весь желаемый эффект.Секунда это 1000.
...
Рейтинг: 0 / 0
12.04.2018, 10:17
    #39628892
Sp999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анимация ожидания окончания AsyncTask
wadmanSp999пропущено...

Но ведь это же целая секунда. Т.е. анимация обновляется раз в секунду. Если я увеличу интервал до 100, то я просто утрачу весь желаемый эффект.Секунда это 1000.
Не, задается не в миллисекундах, а в секундах:
Код: java
1.
TimeUnit.SECONDS.sleep(1);
...
Рейтинг: 0 / 0
12.04.2018, 10:29
    #39628903
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анимация ожидания окончания AsyncTask
Sp999wadmanпропущено...
Секунда это 1000.
Не, задается не в миллисекундах, а в секундах:
Код: java
1.
TimeUnit.SECONDS.sleep(1);


Не обратил внимания...
Дак замени на https://docs.oracle.com/javase/tutorial/essential/concurrency/sleep.html :)
...
Рейтинг: 0 / 0
12.04.2018, 13:45
    #39629104
Sp999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анимация ожидания окончания AsyncTask
wadmanSp999пропущено...

Не, задается не в миллисекундах, а в секундах:
Код: java
1.
TimeUnit.SECONDS.sleep(1);


Не обратил внимания...
Дак замени на https://docs.oracle.com/javase/tutorial/essential/concurrency/sleep.html :)
Не помогло, попробую еще сделать просто через таймер
...
Рейтинг: 0 / 0
12.04.2018, 14:06
    #39629139
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анимация ожидания окончания AsyncTask
Чем не подошла "родная" анимация?

http://startandroid.ru/ru/uroki/vse-uroki-spiskom/56-urok-20-animatsija.html
...
Рейтинг: 0 / 0
12.04.2018, 14:48
    #39629193
Sp999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анимация ожидания окончания AsyncTask
wadmanЧем не подошла "родная" анимация?

http://startandroid.ru/ru/uroki/vse-uroki-spiskom/56-urok-20-animatsija.html
Вообщем, через таймер все получилось:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
class WaitTimer {
		private Timer timer = null;
		public WaitTimer(String prompt) {
			if(timer != null) {
				timer.cancel();
			}
			timer = new Timer();
			WaitTimerTask timerTask = new WaitTimerTask(prompt);
			timer.schedule(timerTask, 0, 1000);
		}
		public void cancel() {
			if(timer != null) {
				timer.cancel();
			}
			txtWait.setText("");
		}
	}
	class WaitTimerTask extends TimerTask {
		String prompt;
		String dots;
		public WaitTimerTask(String prompt) {
			super();
			this.prompt = prompt;
			this.dots = " ...";
		}
		@Override
		public void run() {
			dots = dots.equals(" .  ") ? " .. " : (dots.equals(" .. ") ? " ..." : " .  ");
			runOnUiThread(new Runnable() {
				@Override
				public void run() {
					txtWait.setText(prompt + dots);
				}
			});
		}
	}

На досуге как-нибудь попробую и родную анимацию. Спасибо!
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Анимация ожидания окончания AsyncTask / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]