WebView加载页面的两种方式——网络页面和本地页面

WebView加载页面的两种方式

一、加载网络页面

  加载网络页面,是最简单的一种方式,只需要传入http的URL就可以,实现WebView加载网络页面

代码如下图:

二、加载本地页面

  1、加载assets目录下的HTML页面:

加载assets目录的页面,大多数可以用来做页面数据的存储打包,这样可以访问 离线文件,不用去进行网络请求,可以减少用户数据流量的使用

示例代码如下:

//加载assets目录文件
webView.loadUrl("file:///android_asset/staticHtml.html");

在这里面,解释一下引号里面每个字段的意思和作用:

  file字段,表示读取本地文件,不读取网络文件。

  android_asset表示读取当前应用的assets目录下的文件

  staticHtml.html表示assets目录下的HTML页面

  2、加载缓存到本地的页面

加载缓存到本地的页面,这个主要可以用来做页面的离线缓存

例如将html文件存储到本地文件目录下

    //文件存储的本地文件夹路径
        File filesDir = getFilesDir().getAbsoluteFile();
        //本地存储的文件
        File destFile = new File(filesDir, "staticHtmlcopy.html");
        //将assets路径下的文件copy到filesDir路径下,注:此处也可以通过网络访问,对页面进行存储
        InputStream is = null;
        try {
            is = getAssets().open("staticHtml.html");
            if (destFile.exists()) {
                destFile.delete();
            }
            FileOutputStream out = new FileOutputStream(destFile);
            try {
                byte[] buffer = new byte[4096];
                int bytesRead;
                while ((bytesRead = is.read(buffer)) >= 0) {
                    out.write(buffer, 0, bytesRead);
                }
            } finally {
                out.flush();
                try {
                    out.getFD().sync();
                } catch (IOException e) {
                }
                out.close();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
        //拼接生成WebView使用的url地址
        String url="file://"+destFile.getAbsolutePath();
        webView.loadUrl(url);

注:一些网络上直接抓取的页面里面一些js可能存在跨域,或者相对路径的情况,所以最好自己先写一些简单的页面做测试。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

细致入微:Oracle RAC DRM引起性能问题案例一则

熊军(老熊) 云和恩墨西区总经理 Oracle ACED,ACOUG核心会员 客户一套运行在Oracle 10.2.0.5 RAC上的系统,间歇性地出现性能问...

3887
来自专栏美团技术团队

Redis高负载下的中断优化

Redis 服务端的总体请求量从年初最开始日访问量百亿次级别上涨到高峰时段的万亿次级别,给运维和架构团队都带来了极大的挑战。

1.1K11
来自专栏北京马哥教育

LINUX上MYSQL优化三板斧

云豆贴心提醒,本文阅读时间7分钟 现在MySQL运行的大部分环境都是在Linux上的,如何在Linux操作系统上根据MySQL进行优化,我们这里给出一些通用简...

2987
来自专栏极客编程

用Node操作Firebird

  Firebird是一个跨平台的关系数据库系统,目前能够运行在Windows、linux和各种Unix操作系统上,提供了大部分SQL-99标准的功能。它既能作...

712
来自专栏个人技术分享

android手机免root修改hosts

开发及测试过程中经常需要切换开发、测试、预发布等环境,切换环境是通过修改hosts实现的。

3.1K3
来自专栏张善友的专栏

Nagios:企业级系统监控方案

在大多数情况下Cacti + RRDtool已经实现对系统各种参数的监测。但很多企业可能不满足于仅仅监测系统基本参数的需求,而是需要监测除基本参数之外的各种应用...

2405
来自专栏小车博客

windows 10 DD包制作

3626
来自专栏FreeBuf

如何逆向破解HawkEye keylogger键盘记录器,进入攻击者邮箱?

这一切要从一次恶意邮件攻击活动开始。下图为我们最近监测到的一个以恶意文件为发送附件的邮件攻击,请注意邮件信息中的英语写作水平是多么差劲,其实,这也是恶意邮件的一...

2608
来自专栏杨建荣的学习笔记

容灾切换中的数据库宕机问题简单分析(一) (r9笔记第12天)

最近对一个统计库做了计划内的容灾切换,即主备切换。操作的过程其实还是蛮顺利的。但是灾难切换中如果出现在问题,那就是灾难中的灾难了。 按照计划对配置信息做了同步,...

3286
来自专栏weixuqin 的专栏

基于 Django 的手机管理系统

1824

扫码关注云+社区

领取腾讯云代金券