viewpager setCurrentItem跨度大导致anr问题解决的过程

产品需求

我们公司做找酒店会场这块,碰到一个需求,展示酒店照片信息,不同照片还有相应的分类。如下图所示:


image.png

技术解决过程

问题:

利用viewpager与横向listview进行实现,这其中遇到一个问题,就是点击地下图片类型的时候,如果向左跨度超过两个图片,就会出现anr异常。

解决过程:

猜想原因应该是,滑动界面跨度较大,导致绘制页面太多而出现这个问题,最开始把滑动代码放入子线程中去执行,但是还是没有用。后来想起之前写过一篇文章,可以通过setOffscreenPageLimit()方法设置预加载数量,通过设置成需要加载图片的个数,让问题得到解决;

问题再现:

本来一般手机进行测试都没有任何问题,可是测试人员,拿了一个很老的手机,运存大约只有1g左右,进行这个页面时,会偶现OOM,瞬间懵逼了...

绕过问题

我没有选择直接通过修改源码的方式去改这个问题(时间来不及,可能也不一定改得好),而是简单粗暴的在用户点击图中图片地下文字时,重新设置adapter适配器的方式绕过问题来解决这个问题。

adapter = new MyAdapter(imgUrlList);
mViewPager.setAdapter(adapter);
mViewPager.setCurrentItem(mPagerStart + pagerPosition);
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容