gpt4 book ai didi

android - 防止在 FragmentPagerAdapter 中重新加载 WebView?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:39 27 4
gpt4 key购买 nike

我有一个 FragmentPagerAdapter 用于显示大约 6 个选项卡,所有这些选项卡都从 Web 服务器加载数据。其中一个选项卡包含一个从我的服务器加载图像的 WebView。 生成图像的服务器端成本很高,因此我想减少重新加载 WebView 的调用次数。对于非 WebView 选项卡,我已经能够保存我的状态(对于那些,只是一个简单的数组)并在选项卡被刷过时恢复它们。

问题:

  • 每次我使用 FragmentPagerAdapter 滑动回到 WebView 时,WebView 都会重新加载,导致重新加载时间长,网络服务器负载高。

考虑的解决方案:

  • 使用ViewPager.setOffscreenPageLimit()这是有问题的,因为它会强制加载更多选项卡,即使它们永远不会被查看。这在我的服务器上不必要地昂贵。
  • 使用WebView.saveState()WebView.restoreState()文档已更新,明确表示此处不再维护显示状态,因此这对这种情况不再有用。
  • 将我的 Activity 设置为:android:configChanges="keyboardHidden|orientation|screenSize"这适用于旋转情况,但不会影响 ViewPager/FragmentPagerAdapter 滑动标签的情况。

这听起来像 WebView.saveState() 的旧行为会是完美的...

最佳答案

问题似乎是您正在清除自己的结果。

虽然在配置更改时需要新的 WebView,否则不需要新的 WebView。而且,如果您已经拥有 WebView,则无需告诉它执行任何操作。

所以,我会试试这个:

  • 在 fragment 的数据成员中保留您在 onCreateView() 中创建的 WebView
  • 仅当该数据成员为 null 时才在 onCreateView() 中扩充布局
  • 仅在扩充布局时调用 loadUrl()

(如果您在 Java 代码中创建 WebView,请将“inflate the layout”替换为“create the WebView via its constructor”)

如果 fragment 的内容超过 WebView,您还需要保留在数据成员中扩充的 Root View ,因此您可以从 onCreateView 返回它()

关于android - 防止在 FragmentPagerAdapter 中重新加载 WebView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14552377/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com