Ответ 1
Я немного поработал, и оказалось, что ViewPager вызовет оба: setUserVisibleHint
и setMenuVisibility
. Я бы переопределил setUserVisibleHint
, поскольку документация для setUserVisibleHint утверждает:
Настройте подсказку системе о том, является ли этот пользовательский интерфейс фрагмента видимым для пользователя. Эта подсказка по умолчанию имеет значение true и постоянна для сохранения и восстановления состояния экземпляра экземпляра. Приложение может установить это значение в false, чтобы указать, что пользовательский интерфейс фрагмента прокручивается вне видимости или в противном случае не отображается непосредственно пользователю. Это может использоваться системой для приоритизации операций, таких как обновление жизненного цикла фрагмента или поведение порядка загрузки.
Попробуйте поместить этот код в свой фрагмент:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
// Make sure that we are currently visible
if (this.isVisible()) {
// If we are becoming invisible, then...
if (!isVisibleToUser) {
Log.d("MyFragment", "Not visible anymore. Stopping audio.");
// TODO stop audio playback
}
}
}