Дождаться отображения активити

Activity Lifecycle, Saving Activity State, Managing Tasks, Intent, Intent Filter
Ответить
Lighter
Сообщения: 61
Зарегистрирован: 13 авг 2013, 16:39

Дождаться отображения активити

Сообщение Lighter » 30 окт 2013, 17:15

Например есть ативити, где по нажатию кнопки запускается другая активити для получения результата:

Код: Выделить всё

public class SomeActivity extends Activity {
	private static final int OTHER_ACTIVITY_REQUEST = 1;
	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (requestCode == OTHER_ACTIVITY_REQUEST) {
			if (resultCode == RESULT_OK) {
				verySlowOperation();
			}
		}
	}
	
	public void buttonOnClick(View view) {		
		Intent intent = new Intent(this, OtherActivity.class).addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);		
		startActivityForResult(intent, OTHER_ACTIVITY_REQUEST);
	}
	
	private void verySlowOperation() {
		try {
			Thread.sleep(10000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}
При получении результата нужно вызвать метод, который долго выполняется (verySlowOperation в примере), но в этом случае окно основной активности не успевает отобразиться, а сразу запускается verySlowOperation и на всё время выполнения отображается чёрный экран, что не очень красиво. Как дождаться, чтобы окно основной активности (SomeActivity) отобразилось, а только после этого происходил запуск нужного метода?

Пробовал запускать из метода onResume - но результат тот же, onResume вызывается раньше отображения активности.

Код: Выделить всё

@Override
	protected void onResume() {
		super.onResume();
		
		if(resultObtained) {
			sendInvoice();
			resultObtained = false;
		}
	}

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Дождаться отображения активити

Сообщение trew » 30 окт 2013, 18:15

Урок 86 Вам в помощь
http://startandroid.ru/ru/uroki/vse-uro ... rimer.html

Вместо метода public void onclick(View v)
у Вас будет protected void onActivityResult

Можно ещё посмотреть уроки, начиная с 80-го.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Lighter
Сообщения: 61
Зарегистрирован: 13 авг 2013, 16:39

Re: Дождаться отображения активити

Сообщение Lighter » 31 окт 2013, 13:08

trew, спасибо.

Есть ещё вопрос: почему если создать ProgressDialog и вызывать метод show, а после этого вызвать verySlowOperation в основном потоке, то ProgressDialog не отображается?

Ответить