防止 FragmentPagerAdapter 中的 WebView 重新加载?

2024-06-19

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

Problem:

  • 每次我使用 FragmentPagerAdapter 滑回 WebView 时,WebView 都会重新加载,从而导致重新加载时间较长且 Web 服务器负载较高。

考虑的解决方案:

  • Use ViewPager.setOffscreenPageLimit() http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit%28int%29这是有问题的,因为它将强制加载更多选项卡,即使它们永远不会被查看。这对我的服务器来说是不必要的昂贵。
  • Use WebView.saveState() http://developer.android.com/reference/android/webkit/WebView.html#saveState%28android.os.Bundle%29 and WebView.restoreState() http://developer.android.com/reference/android/webkit/WebView.html#restoreState%28android.os.Bundle%29文档已更新,以明确此处不再维护显示状态,因此这对于此场景不再有用。
  • 将我的活动设置为: android:configChanges="keyboardHidden|orientation|screenSize" 这适用于旋转情况,但不会影响 ViewPager/FragmentPagerAdapter 滑动选项卡情况。

这听起来像是旧行为WebView.saveState() http://developer.android.com/reference/android/webkit/WebView.html#saveState%28android.os.Bundle%29本来就很完美...


问题似乎是你正在抹掉自己的结果。

当你需要一个新的WebView配置更改时,您不需要新的WebView否则。而且,如果您已经拥有WebView,您不必告诉它做任何事情。

所以,我会尝试这个:

  • 按住WebView你创建的onCreateView()在片段的数据成员中
  • 仅对布局进行充气onCreateView()如果该数据成员是null
  • 只打电话loadUrl()如果你夸大了布局

(如果您正在创建WebView在 Java 代码中,将“膨胀布局”替换为“创建WebView通过其构造函数”)

如果片段的内容多于WebView,您还需要保留在数据成员中膨胀的根视图,以便您可以从onCreateView().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止 FragmentPagerAdapter 中的 WebView 重新加载? 的相关文章

  • 离线安装 android 很困难[已过时]

    我是非洲的一名学生 在我们的土地上 实际上存在缓慢且昂贵的互联网连接 这就是为什么每当我们听到 在线存储库 安装软件方法这个词时我们都会感到恐惧 该死 这通常意味着你必须去别处寻找 问题 如果没有将 Eclipse 连接到互联网 我无法安装
  • Android 使用键盘上的“完成”按钮来单击按钮

    好的 在我的应用程序中 我有一个供用户输入数字的字段 我已将该字段设置为仅接受数字 当用户单击该字段时 它会弹出键盘 键盘 ICS 上 上有一个完成按钮 我希望键盘上的完成按钮能够触发我的应用程序中的提交按钮 我的代码如下 package
  • Android:删除整个数据库

    我想删除由我的应用程序创建的完整数据库 你知道有什么adb命令或者android语句可以做到这一点吗 您可以运行命令 adb s emulator 5554 shell or whatever port you use cd data da
  • Android 和 Java Uuid

    我想为我的应用程序生成一个uuid 我尝试了很多东西 例如wifi mac地址 获取android id 序列号 从设备创建伪uuidandroid os Build特性 我还知道java本身有Uuid创建者类java util UUID
  • 毕加索不在磁盘上缓存图像

    我必须使用自定义 OkHttpClient 以便我可以向图像请求添加标头 问题是毕加索不会因此而在磁盘上缓存任何图像 我用过setIndicatorsEnabled true 检查缓存 我只看到红色指示器 当我使用默认的 OkHttpDow
  • 在 Android 的 Renderscript 中,使用 rs_script_call 结构来限制 rsForEach 调用期间操作的分配范围

    使用 Android 的 RenderScript 我尝试限制 rsForEach 调用期间操作的分配范围 根据文档 您可以通过传递 rs script call 结构来实现此目的 但每当我尝试此操作时 应用程序都会崩溃 rs script
  • Android 相机:线程?哪个应该做什么

    我试图弄清楚哪些线程应该在 Android 中执行哪些操作 我发现官方文档中唯一说明的是camera open 应该放入它自己的线程中 关于什么 camera startPreview camera stopPreview camera r
  • 更改Android TabWidget底部栏颜色

    如何更改 TabWidget 底部栏的颜色 我已经成功更改了选项卡背景颜色 但底部栏仍然是灰色 橙色 并且我在 Android 文档和源代码中找不到与此相关的任何信息 谢谢 See 启用 禁用此行 tabHost getTabWidget
  • 如何在 Android 中正确设置 google play 登录?

    我在安卓上开发了一个游戏 我尝试实现 GooglePlay SignIn 但显示错误 我无法调试此错误 我尝试在模拟器以外的不同手机型号中安装该应用程序 Code public void startSignInIntent startAct
  • 无法在 Android Studio 中将项目迁移到 Gradle

    我有一个项目已经在 Android Studio 中运行 在 Android Studio 中打开项目后 我收到消息 将项目迁移到 Gradle 该项目不使用 Gradle 构建系统 我们建议您迁移到使用 Gradle 构建系统 有关迁移到
  • Android 上有某种 ASLR 保护吗?

    我想知道是否有人可以访问具有从程序的一个实例到另一个实例的函数地址相同的库 在同一设备上运行时 地址空间布局将非常一致 许多主要系统库都是由 zygote 预加载的 因此由它分叉出来的子级继承为共享映射 以区分为应用程序 我认为在虚拟内存级
  • Android AsyncTask 启动另一个 AsyncTask

    我目前正在 AsyncTask 的 onPostExecute 方法中执行类似的操作 其中NewTask is not当前正在执行的任务 private class OlderTask extends AsyncTask
  • 如何在 Android 中对视图进行动画处理并让它保持在新的位置/大小?

    目前 我的 Android 应用程序中有一个视图 并且该视图正在播放帧动画 我想要动画视图以将其大小增加到 150 当我对其应用缩放动画并且缩放动画完成时 我希望查看器在活动生命周期的其余部分中保持新的尺寸 不幸的是 现在当放大动画完成时
  • 在 webview 片段中实现后退按钮

    我想在我的应用程序中实现后退按钮 我正在使用每个片段显示不同的网络视图 现在 如果我按后退按钮 无论我在哪里 它都会关闭应用程序 我希望它能像浏览器一样返回 我有我的MainActivity java fragment1 java等直到fr
  • 如果使用 PackageManager 禁用应用程序图标,是否会导致该应用程序的自动更新出现问题?

    我有一个应用程序 其中使用以下代码隐藏应用程序图标 PackageManager p getApplicationContext getPackageManager p setComponentEnabledSetting getCompo
  • 如何使用 Android 的身份验证标签进行 GCM 加密

    我想制作一个通过 GCM 模式与 Android 身份验证标签加密数据的函数 这是我的源代码 public static byte GCMEncrypt String hexKey String hexIV byte aad throws
  • 带图标的 Android ContextMenu 选项

    Hi All 我有一个简单的问题 是否可以将带有图标的菜单项添加到上下文菜单中 我搜索过这个问题 发现这是不可能的 但是在 Android 设备的主屏幕中 当我长按时 会显示 添加到主屏幕 上下文菜单 其中包含带有文本的菜单项和图标 所以我
  • Android 切换按钮

    通过遵循这个article http ww1 mokasocial com 我能够创建一个由图像组成的切换按钮 我的开关没有任何文字 只有开 关图像 当我的切换按钮创建时 它会被拉伸并失去其比例 如何使其保留其原始大小 这些是我使用的图像
  • 如何获取viewPager选中的Tab?

    我使用 lib viewpagerindicator 创建了一个 viewpager 该活动扩展了 FragmentActivity 因此我在获取选择哪个选项卡时遇到问题 我的适配器由下面的代码给出 class GoogleMusicAda
  • facebook accesstoken 存储在共享首选项中 (Android)

    我正在尝试存储来自 Facebook 的访问令牌以供以后使用 为此 我想使用 SharedPreferences 因此 我得到了字符串部分 令牌 和过期日期 如示例所示 final String MY PREFS NAME MyPrefsF

随机推荐

  • 如何使用ilMerge将dll合并到exe文件中?

    I tried C Windows System32 gt ilmerge target winexe out c output exe c MyProgram exe c Microsoft WindowsAPICodePack dll
  • 如何用函数记录一个文件?

    我有一个带有函数 lib py 但没有类的python 文件 每个函数都有以下样式 def fnc1 a b c This fonction does something param a lalala type a str param b
  • TestFlight 提供反馈按钮

    我正在使用 iOS 8 的最新 testflight 版本 我将自己添加为内部测试人员 现在当我使用 testflight 打开应用程序时 我找不到反馈按钮 如果有人有任何线索 请告诉我 您在 Testflight 应用程序中提供反馈 打开
  • SFML 纹理显示为白框

    我在基类中有一个纹理和精灵 正在由另一个类扩展 但是在绘制时 精灵显示为白色框 我知道这与精灵失去与纹理对象的链接有关 但我对 C 有点陌生 所以我不太确定它是如何发生的 这是代码 我删除了一些不相关的部分以减少大小 拾取 h ifndef
  • 用于开发和生产的不同种子

    根据构建配置 调试 发布 使用实体框架 6 以不同方式为数据库设定种子的推荐方法是什么 现在我正在使用 MigrateDatabaseToLatestVersion 初始值设定项 在开发过程中 我喜欢在数据库中使用虚假数据进行测试 因此 我
  • 如何在 Struts 2 OGNL 中将参数传递给方法调用

    我想使用属性作为对象方法的参数
  • 使用 Tkinter 打开网页

    因此 我的应用程序需要能够打开其中的单个网页 并且它必须来自互联网并且未保存 特别是我想使用 Tkinter GUI 工具包 因为它是我最熟悉的工具包 最重要的是 我希望能够在窗口中生成事件 例如单击鼠标 但无需实际使用鼠标 有什么好的方法
  • 如何在 Eclipse 中以编程方式关闭编辑器 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 当我们删除一个项目 IProject 时 我们想关闭它的所有打开的文件 我可以通过项目的成员方法访问 IFiles 我想关闭已删除项目的所有
  • MATLAB 类的 Description 和DetailedDescription 属性

    内置 MATLAB 类具有 Description 和 DetailedDescription 属性的值 gt gt handle ans meta class handle Package meta Properties Name han
  • AdMob 插页式广告仅显示一次

    当广告在一个会话内第二次或第三次打开时 LogCat 会显示错误消息 尝试使用不同的广告管理器启动新的 AdActivity 我通过应用程序主屏幕的 on resume 方法中的意图启动插页式广告 Override public void
  • Python speedtest.net,或等效的[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 是否有一个 Python 库可以实现 SpeedTest net 测试或等效的互联网连接速度测试 GitHub上有一个项目叫速度检查 https gi
  • 用 java 编写解释器时的 switch 或 if 语句

    当前的作业需要我编写一个程序 以一种非常微小且基本的编程语言 行为有点像 FORTRAN 来读取包含指令的文件并执行这些指令 基本上它是我猜的语言的简单解释器 它是完全线性的 所有语句都是按顺序定义的 并且只有字符串和整数变量 我需要查找和
  • 获取请求的客户端 IP 地址而不是 Cloudflare 的 IP 地址

    Cloudflare 会更改传入请求的 IP 地址 因为 Cloudflare 是我的网站和互联网之间的中间件 代理 我该怎么办获取请求的初始IP地址 而不是 Cloudflare 的 IP 地址 我听说过mod cloudflare但是这
  • 使用 JQuery 选择表行并选中复选框

    我有一个表 我想选择满足我的条件的行并选中它们各自的复选框 假设我想获取带有日期的行2013 03 21 我怎样才能使用 JQuery 来做到这一点 table tr td Record1 td td 2013 03 21 td td td
  • 无法在 Mac 上启动 MySQL

    使用 Brew 安装后 我无法运行 MySQL 我使用的是 OS X El Capitan 版本 10 11 3 和 MySQL Server 版本 5 7 11 当我启动服务器时 我收到 启动 MySQL 错误 服务器退出而不更新 PID
  • 将 value 转换为 bool 的魔法

    今天我意识到将值转换为 bool 是一种魔法 int value 0x100 unsigned char uc static cast
  • 通过eclipse运行ant找不到环境变量,但是通过终端运行ant就可以了

    当我通过 Eclipse 运行 ant 时 一些目标构建得很好 但那些需要特定环境变量 即我在 profile 文件中设置的 SOME SDK 的目标将无法工作 即使我尝试回显 env JAVA HOME Ant 通过 eclipse 也只
  • 如何使用 iOS 可达性

    我正在开发一个使用网络的 iPhone 应用程序 iPhone 通过 HTTP 请求与我的服务器通信 并且应该可以在 WiFi 和 3G 上运行 我目前使用NSURLConnection initWithRequest向我的服务器发送异步请
  • PHP - 当 false 时获取 bool 来回显 false

    以下代码不会打印出任何内容 bool val bool false echo bool val 但下面的代码打印1 bool val bool true echo bool val 有没有更好的打印方法0 or false when boo
  • 防止 FragmentPagerAdapter 中的 WebView 重新加载?

    我有一个 FragmentPagerAdapter 用于显示大约 6 个选项卡 所有选项卡都从 Web 服务器加载数据 其中一个选项卡包含一个从我的服务器加载图像的 WebView 生成图像的服务器端成本很高 因此我想减少重新加载 WebV