Android: noHistory не заканчивается

У меня было занятие А, которое раньше:

private void launchActivityBAndFinish() {
  Intent activityB = makeActivityBIntent();
  startActivity(activityB);
  finish();
}

Это было нехорошо, потому что ActivityB потребуется некоторое время для запуска (он также потенциально находится в другом процессе или даже в другом приложении). Итак, как написано, это оставит визуальный разрыв между немедленным уходом ActivityA и запуском ActivityB. Желаемое поведение - продолжать показывать ActivityA (загрузочный счетчик) до тех пор, пока ActivityB не станет видимым.

Поэтому я изменил его, чтобы добавить android:noHistory в манифест ActivityA и удалить вызов finish(). Он работал, как задумано (ActivityB плавно отображается поверх ActivityA, а последний исчез из истории). ЗА ИСКЛЮЧЕНИЕМ на самом деле не работает, когда ActivityB закрывается достаточно быстро сразу после запуска (через [X] в полностью видимом пользовательском интерфейсе ActivityB, который вызывает finish()).

Итак, мои вопросы:

1) Когда android:noHistory срабатывает точно по триггеру ()? Документы сообщает, что ActivityA больше не отображается, но это не похоже на описанное исключение.

2) Как правильно достичь желаемого поведения пользовательского интерфейса, о котором я говорю?

Спасибо!

Что вы делаете перед вызовом метода setContentView в ActivityB? Я думаю, вы делаете что-то, что требует много времени, прежде чем рисовать макет.

JaFer 12.03.2018 22:49

ActivityB находится в другом процессе и, возможно, в другом приложении, поэтому для его запуска требуется время. Он также выполняет дисковый ввод-вывод, поэтому для рисования содержимого потребуется время. Следовательно, я ищу способы подождать, пока он не появится, а затем закрыть ActivityA (ActivityB находится вне моего контроля).

zavidovych 13.03.2018 02:15
0
2
80
1

Ответы 1

В этом случае Activity была полупрозрачной, следовательно, android: noHistory не завершал работу Activity.

Другие вопросы по теме