Почему активность зависает при возврате из нескольких фрагментов другой активности?

У меня есть два вида деятельности A и B, у A есть 3 фрагмента, а именно a1, a2 и a3. a3 - это выбранный по умолчанию фрагмент, который показывает видео, a2 содержит один большой текстовый вид и небольшой текст редактирования в нем, а a1 содержит вид списка.

Теперь в строке заголовка действия A у меня есть кнопка, и, поскольку она находится в строке заголовка, она видна из всех трех фрагментов. При нажатии на эту кнопку я открываю Activity B. с помощью функции Follow.

public void inviteUser() {
    if ( getUserType() == ACTIVE ) {
        Intent intent = new Intent(this, B.class);
        intent.putExtra(Constants.MEETING_ID, (long) session.getSessionId());
        intent.putExtra(Constants.INVITE_FROM_SESSION, true);
        intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        this.startActivityForResult(intent, RESULT_OK);
    } else {
        Toast.makeText(this, getString(R.string.strNotAPresenterMsg), Toast.LENGTH_LONG).show();
    }
}

Внутри Б я называю егоsetResult(ResultCode) and finish(), Теперь у меня естьдве проблемы когда яначать B с фрагментов a1 и a2,

1. B занимает слишком много времени, прежде чем вернуться обратно к A (то есть после нажатия кнопки назад или после завершения работы B), 2. Он не отображает никаких диалогов после возврата, пока я не перейду к какому-либо другому фрагменту или не поверну устройство, как только я это сделаю, оно начинает вести себя нормально и удивительно,

когда я начинаю деятельностьВ из фрагмента а3, он сразу возвращается и ведет себя нормально.

Я попытался переопределить все методы жизненного цикла этих фрагментов и поместил операторы Log внутри каждого метода. Боль в том, что последовательность вызова метода является нормальной и одинаковой для обоих случаев.

Я пытался изменить флаги намерения, но безуспешно.

Я добавил фальгandroid:configChanges="keyboardHidden|orientation" за все действия моего приложения.

Надеюсь, я объяснил проблему, на случай, если кому-то понадобится какая-то конкретная часть кода. пожалуйста, прокомментируйте. Я отредактирую вопрос и добавлю это. Помогите ребята !!!

РЕДАКТИРОВАТЬ Я тестировал в GingerBread 2.3.6, он не работал, но я только что проверил, что на эмуляторе работает JellyBean, и он работает нормально. Похоже, проблема связана с версией ОС. Любая идея ?

РЕДАКТИРОВАТЬ 2 Одним из важных моментов наблюдения является то, что когда в B я нажимаю кнопку «назад», через несколько миллисекунд вызывается onResume () предыдущего действия и их фрагменты. Но даже после этого B на экране некоторое время, и кажется, что телефон завис на несколько секунд ...

РЕДАКТИРОВАТЬ 3 Просто узнал, что onStop () и OnDestroy () из B не вызываются, когда я запускаю B из фрагмента a1 или a2. Однако они вызываются отлично, когда я на a3. Что может быть причиной этого?

В документе сказано, что «видимое время жизни действия происходит между вызовом onStart () и соответствующим вызовом onStop (). В течение этого времени пользователь может видеть действие на экране, хотя оно может не находиться на переднем плане и взаимодействуя с пользователем. "

Поскольку onStop () не гарантируется, активность ведет себя ненормально, когда она не вызывается .. Я также узнал, что в устройствах HoneyComb + она всегда вызывается. Я попытался вызвать onStop () внутри onPause (), но это не работает. Что я делаю сейчас ?

Ответы на вопрос(1)

Ваш ответ на вопрос