我有一个 FragmentPagerAdapter 用于显示大约 6 个选项卡,所有这些选项卡都从 Web 服务器加载它们的数据。其中一个选项卡包含一个从我的服务器加载图像的 WebView。生成图像的服务器端成本很高,因此我想减少重新加载 WebView 的调用次数。对于非 WebView 选项卡,我已经能够保存我的状态(对于那些,只是一个简单的数组)并在选项卡被刷过时恢复它们。
问题:
- 每次我使用 FragmentPagerAdapter 滑回 WebView 时,它都会重新加载,这会导致我的 Web 服务器的重新加载时间和负载很高。
考虑的解决方案:
- 使用ViewPager.setOffscreenPageLimit() 这是有问题的,因为它会强制加载更多选项卡,即使它们永远不会被查看。这在我的服务器上是不必要的昂贵。
- 使用WebView.saveState()和WebView.restoreState() 文档已经更新,明确显示状态在这里不再维护,所以这对于这种场景不再有用。
- 将我的活动设置为: android:configChanges="keyboardHidden|orientation|screenSize" 这适用于旋转情况,但不影响 ViewPager/FragmentPagerAdapter 在选项卡情况下滑动。
听起来WebView.saveState()的旧行为会很完美......