Android 5.0 中Fragment使用大分辨率图片导致的卡顿问题

最近在一个项目中,按照正常情况使用ViewPager嵌套Fragment,来完成可滑动效果的实现,可是在实际使用过程中,在Android 5.0 以下机型流畅滑动,只有在 Android 5.0 以上机型中出现卡顿,此问题一直困扰很久,今天在无意中替换了Fragment中的大分辨率的背景图片,瞬间流畅了。初步估计应该是跟Android 5.0开始使用的ART机制有关系,有时间再研究研究。

下面是我根据以往经验总结一些防止卡顿的方法:

1、减轻单个Fragment负载

Fragment顾名思义就是碎片的意思,不应该让他曾担太多的负担,我开头讲的问题就是那个Fragment曾担的大分辨率图片的渲染工作,所以在切换的过程中会消耗大量的系统资源导致卡顿。

2、分离获取数据和展示数据

在一个Fragment中加入获取数据的工作,会导致在快速滑动过程中,开启了多个Fragment的网络请求,所以不应该在单个Fragment中加入获取数据的工作,应该统一数据获取工作,Fragment只作为展示和刷新数据之用。

3、Fragment内容延迟加载

如果必须要在Fragment中加载网络请求任务,可以使用延迟加载。在切换到当前Fragment的时候,并不立刻去加载Fragment的内容,而是先加载一个简单的空布局,然后启动一个延时任务,延时时长为T,当用户在该Fragment停留时间超过T时,继续执行加载任务;而当用户切换到其他Fragment,停留时间低于T,则取消该延时任务。

上面就是我简单的经验总结,记录备忘。

标签:android l, fragment, 卡顿, fragment优化