Событие Android Fragment onPause вызвано поздно с помощью FragmentPagerAdapter

У меня есть FragmentPagerAdapter в действии, которое управляет 4 фрагментами, все работает нормально, но события onPause и onDestroyView каждого фрагмента не вызываются сразу после загрузки нового фрагмента, то есть:

FragmentA -> FragmentB -> FragmentC -> FragmentD

событие onPause / onDestroyView FragmentA вызывается, когда я перешел к FragmentC, глобально эти события вызываются после 2 шагов.

Я что-нибудь упускаю?

Спасибо.


person Houssem    schedule 11.09.2013    source источник


Ответы (1)


FragmentPager создаст (фактически сохранит в памяти) 1 страницу вне экрана до и после фрагмента, который можно просмотреть в данный момент, это функция, позволяющая пейджеру реагировать на прокручивание. Поэтому, когда фрагмент переходит на 2 пролистывания / страницы, он уничтожается, отсюда и задержка.

В этом ответе описывается, как переопределить это значение по умолчанию.

person Frank Yin    schedule 11.09.2013
comment
Спасибо, но использование setOffscreenPageLimit () не может быть 0, а значение по умолчанию не решает проблему, даже если оно установлено на 1, нужно найти другое решение. - person Houssem; 11.09.2013
comment
Не соглашайтесь с отрицательным голосом, поскольку этот ответ объясняет задержку, о которой спрашивается. - person Frank Yin; 12.09.2013
comment
@Houssem, если задержка для запуска onCreate / onPause / onDestroy недопустима, то пейджер просмотра фрагментов использовать не следует. Однако, если вы просто ищете триггерное событие в точке смахивания, следует использовать setOnPageChangeListener - person Frank Yin; 12.09.2013
comment
Извините за голос против, у вас есть причина. Я часами искал решение, но ничего. На самом деле, я должен отменить некоторые асинхронные задачи в этих фрагментах, когда они удаляются, поэтому мне нужно onPause или onDestroyView для выполнения без задержки. Если вы знаете способ избавиться от этой проблемы, пожалуйста, помогите. - person Houssem; 12.09.2013