在onresume时回调的生命周期没有判定,造成暂停的轮播图没法恢复滚动
MoYuFly opened this issue · 0 comments
MoYuFly commented
在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)