0

I have a Viewpager which extends FragmentStatePagerAdapter with 2 fragments (each has com.airbnb.epoxy.EpoxyRecyclerView)

Used Airbnb's Expoxy library to populate heterogeneous recyclerview

The 1st fragment has youtube player (library used https://github.com/PierfrancescoSoffritti/android-youtube-player) which plays video on start of screen

This youtube library takes care of youtubeplayer lifecycle by adding fragment.lifecycle.addObserver(youtubePlayer)

Issue

When I swipe to 2nd fragment the video still plays in 1st fragment

My findings

On swipe of viewpager to 2nd fragment , the 1st fragment doesn't goes to onPause() state

What I did

I tried setting viewPager.offscreenPageLimit = 0 , but no use

Community
  • 1
  • 1
karthik kolanji
  • 2,044
  • 5
  • 20
  • 56
  • Fragment does not pause on swiping . Try overriding `setUserVisibleHint()` to check if Fragment is visible to use or not .. Or Alternatively you can pass a callback from `OnPageChangeListener`... – ADM Jul 11 '19 at 04:59
  • Also Check [ViewPager.setOffscreenPageLimit(0) doesn't work as expected](https://stackoverflow.com/questions/10073214/viewpager-setoffscreenpagelimit0-doesnt-work-as-expected). – ADM Jul 11 '19 at 05:11

1 Answers1

0

This doesn't really have to do anything with epoxy or the youtube library. ViewPager on android loads the adjacent fragments so onResume/onPause don't work as you'd expect in a ViewPager. Are you using AndroidX? If you are I recommend using the latest version of appcompat, currently androidx.appcompat:appcompat:1.1.0-beta02.

FragmentStatePagerAdapter has a new constructor: FragmentStatePagerAdapter(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)

Which will properly call onResume/onPause on fragments inside ViewPager resulting in a better experience in your case.

Roudi
  • 1,249
  • 2
  • 12
  • 26