自动滚动视图寻呼机导致掉帧

Autoscrolling view pager causes frames to drop

我有一个无限和自动滚动的视图寻呼机,有 3 个页面(视图,不是片段)。使用 ObjectAnimator 我设置了一个虚拟动画,如下所示:

valueAnimator.setRepeatMode(ObjectAnimator.RESTART);
valueAnimator.setRepeatCount(ObjectAnimator.INFINITE);
valueAnimator.setDuration(1500);

并且在 onAnimationRepeat 中,我使用 setCurrentItem(nextItem, true) 移动到下一页。但是,如果我坐在这个屏幕上等待,那么 UI 性能会在 10 次左右的页面更改后越来越低(使用 TinyDancer 我观察到 FPS 从 60 下降到 20)。

但是,将行更改为 setCurrentItem(nextItem, false)(将 smoothScroll 设置为 false),性能下降就消除了。

多次调用 setCurrentItem 是否会导致这种情况?我可以调整 smoothScroll 行为来解决这个问题吗?同样,我在这个寻呼机中最多加载了 5 个视图,并且我观察到当 FPS 下降时内存使用量保持不变。

这很可能与受 ViewPager 影响的视图有关。 ViewPager 所在的位置是否有父布局?检查您是否有父视图。虚拟动画可能导致父布局多次重新绘制自身和子元素。当您有...等待...嵌套视图时,这尤其麻烦!