powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Анимация ожидания окончания AsyncTask
9 сообщений из 9, страница 1 из 1
Анимация ожидания окончания AsyncTask
    #39628564
Sp999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток всем!

Написал класс-наследник 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
Анимация ожидания окончания AsyncTask
    #39628652
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sp999Может кто знает, как это победить?
Интервал увеличить хотя-бы до 100?
...
Рейтинг: 0 / 0
Анимация ожидания окончания AsyncTask
    #39628657
Sp999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanSp999Может кто знает, как это победить?
Интервал увеличить хотя-бы до 100?
Но ведь это же целая секунда. Т.е. анимация обновляется раз в секунду. Если я увеличу интервал до 100, то я просто утрачу весь желаемый эффект.
...
Рейтинг: 0 / 0
Анимация ожидания окончания AsyncTask
    #39628850
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sp999wadmanпропущено...

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

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


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

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


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

http://startandroid.ru/ru/uroki/vse-uroki-spiskom/56-urok-20-animatsija.html
...
Рейтинг: 0 / 0
Анимация ожидания окончания AsyncTask
    #39629193
Sp999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
9 сообщений из 9, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / Анимация ожидания окончания AsyncTask
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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