首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android设置WebView而不重新加载

问Android设置WebView而不重新加载
EN

Stack Overflow用户
提问于 2013-08-10 22:27:20
回答 1查看 910关注 0票数 1

我的安卓应用程序中有一个WebView,用于显示一些数据,我手工将这些数据建模为HTML (它不是显示真实的网页,而是给它一些HTML来显示)。

数据来自and服务,因此需要一些时间来加载。现在,当用户远离此活动并再次返回时,数据将从webservice重新加载并再次显示,因此用户必须等待加载数据。然而,10次中有9次(甚至更多)的数据将与上次相同,因此这只是浪费时间。因此,我现在尝试实现一些基本的缓存:

  • 每当接收到数据时,就将其缓存在内存中;
  • 每当请求相同的数据时,首先从内存加载数据(如果可用的话);
  • 加载缓存数据后,将从后台的webservice加载新数据。
  • 当这个后台加载完成后,缓存的数据应该用新的数据“无缝”地更新。

最后一步我有麻烦了。现在,我只是简单地给WebView一些HTML来处理:

代码语言:javascript
复制
    builder.append("<html><head><link rel=\"stylesheet\" href=\"file:///android_asset/style.css\" type=\"text/css\">");
    builder.append("</link>");
    builder.append("</head><body>");
    builder.append(getBody(data));
    builder.append("</body></html>");

    webContents.loadDataWithBaseURL("file:///android_asset/", builder.toString(), "text/html", "utf-8", null);

我只是简单地用缓存的数据调用这段代码,然后(在接收到新数据之后)使用更新的数据调用这段代码。

结果是,WebView被完全重新加载;它跳回页面的顶部(大多数页面都很长,因此用户会向下滚动一点),更糟糕的是,它会在一小部分时间内变为空白,然后开始重新加载所有内容(特别是在需要显示的图像时)。

我想避免这种明显的数据更新。我很好,小变化突然弹出(就像中间的一段文字变得稍长,导致页面滚动一点),但完全滚动到顶部是非常烦人的,完全空白和必须重新加载所有东西是不能接受的。

在这里我能做些什么来避免这些问题吗?我可以“更新”WebView的HTML而不让它完全重新加载所有内容吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-08-11 05:10:35

您将不得不使您的WebView表现得像一个webapp。每次调用loadDataWithURL时,都会像重新加载页面一样重新加载页面。

避免这种情况的一种方法是通过一个JavaScript桥与代码的Java端进行JavaScript接口。通过将数据从Java端传递到JavaScript函数,您可以更新WebView ui,而无需进行完全重新加载。

一旦您在WebView中获得数据,更新HTML将取决于您的视图的外观。

如果您搜索'JavaScript DOM更新‘和'Android桥’,有许多演示可用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18166935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档