Дождаться отображения активити
Добавлено: 30 окт 2013, 17:15
Например есть ативити, где по нажатию кнопки запускается другая активити для получения результата:
При получении результата нужно вызвать метод, который долго выполняется (verySlowOperation в примере), но в этом случае окно основной активности не успевает отобразиться, а сразу запускается verySlowOperation и на всё время выполнения отображается чёрный экран, что не очень красиво. Как дождаться, чтобы окно основной активности (SomeActivity) отобразилось, а только после этого происходил запуск нужного метода?
Пробовал запускать из метода onResume - но результат тот же, onResume вызывается раньше отображения активности.
Код: Выделить всё
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();
}
}
}Пробовал запускать из метода onResume - но результат тот же, onResume вызывается раньше отображения активности.
Код: Выделить всё
@Override
protected void onResume() {
super.onResume();
if(resultObtained) {
sendInvoice();
resultObtained = false;
}
}