Я немного покопался, и оказалось, что 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
}
}
}