BannerViewPager
BannerViewPager copied to clipboard
在onresume时回调的生命周期没有判定,造成暂停的轮播图没法恢复滚动
在onresume时,回调生命周期:Lifecycle.State.STARTED,所以下面的判定会造成轮播图无法恢复滚动,这个问题出现的时机是当轮播图已经加载了,切换到别的页面时暂停这个轮播图,再回来这个页面无法恢复滚动。这个轮播图是用在recycleview列表的,第二段代码是轮播图的实现代码。 现在是暂停后,需要我自己在onresume时调用startLoopNow方法才能恢复播放,因为这个方法没有进行判定生命周期。 /**
- Start loop */ public void startLoop() { if (!isLooping && isAutoPlay() && mBannerPagerAdapter != null && mBannerPagerAdapter.getListSize() > 1 && isAttachedToWindow() && (lifecycleRegistry == null || lifecycleRegistry.getCurrentState() == Lifecycle.State.RESUMED || lifecycleRegistry.getCurrentState() == Lifecycle.State.CREATED)) { mHandler.postDelayed(mRunnable, getInterval()); isLooping = true; }}
第二段代码 holder.bannerView .registerLifecycleObserver(lifecycle) .setIndicatorHeight(AutoSizeUtils.pt2px(context, 4f)) .setCanLoop(!isStopLoops) .setIndicatorSliderWidth(tipWidth) .setIndicatorStyle(IndicatorStyle.ROUND_RECT) .setIndicatorMargin(0, 0, 0, AutoSizeUtils.pt2px(context, 12f)) .stopLoopWhenDetachedFromWindow(false) .setIndicatorSliderColor(Color.parseColor("#80FFFFFF"), Color.parseColor("#FFFFFF")) .setAdapter(MainItemBannerTestAdapter(context)).create(lists[position].banner)