当前位置:首页 » 安卓系统 » android保存webview

android保存webview

发布时间: 2024-03-08 13:51:15

Ⅰ Android:最全面的 Webview 详解

WebView是一个基于webkit引擎、展现web页面的控件。

一般来说Webview可单独使用,可联合其子类一起使用,所以接下来,我会介绍:

常见用法:Back键控制网页后退

配置步骤1:添加访问网络权限 (AndroidManifest.xml)

配置步骤2:生成一个WebView组件(有两种方式)

配置步骤3:进行配置-利用WebSettings子类 (常见方法)

常见用法:设置WebView缓存

注意: 每个 Application 只调用一次 WebSettings.setAppCachePath(),WebSettings.setAppCacheMaxSize()

常见方法1:shouldOverrideUrlLoading()

常见方法2:onPageStarted()

常见方法3:onPageFinished()

常见方法4:onLoadResource()

常见方法5:onReceivedError()

常见方法6:onReceivedSslError()

常见方法1: onProgressChanged()

常见方法2: onReceivedTitle()

具体请看我写的文章 Android WebView与JS的交互方式 最全面汇总

3.4.1 不在xml中定义 Webview ,而是在需要的时候在Activity中创建,并且Context使用 getApplicationgContext()

3.4.2 在 Activity 销毁( WebView )的时候,先让 WebView 加载null内容,然后移除 WebView,再销毁 WebView,最后置空。

步骤1:添加访问网络权限

AndroidManifest.xml

步骤2:主布局
activity_main.xml

步骤3:根据需要实现的功能从而使用相应的子类及其方法(注释很清楚了)
MainActivity.java

Ⅱ Android系统 WebView是什么有什么用

现在越来越多的APP都内置了Web网页去加载视图,也就是我们常说的Hybrid APP混合应用,市场上很多平台都是这样做的,比如我们经常使用的淘宝、京东等电商平台。这些是如何实现的呢?在我们Android中有一个WebView组件,它就可以实现此类功能。它是Android中的原生UI控件,主要用于在APP应用中方便地访问远程网页或本地HTML资源,同时WebView也在Android中充当Java代码和JS代码之间交互的桥梁,实际上也可以将WebView看做一个功能最小化的浏览器。下面我们一起来看看WebView的一些常用的使用方法。

WebView是Android系统提供的一个能显示网页的系统控件,它是一个特殊的View,同时也是一个ViewGroup,可以有很多其他子View。在Android 4.4以下(不包含4.4)系统WebView底层实现是采用WebKit内核,而在Android 4.4及其以上Google采用了Chromium内核作为系统WebView的底层内核支持。在这一变化中Android提供的WebView相关API并没有发生较大变化,在4.4上也兼容低版本的API并且引进了少部分API。这里简单介绍下基于Chromium的WebView和基于WebKit的WebView之间的差异,基于Chromium的Webview提供了更广的HTML5、CSS3、JavaScript支持,在Android系统版本5.0上基于Chromium 37,WebView提供了绝大多数的HTML5特性支持,除此之外Chromium也支持远程调试(Chrome DevTools)。WebKit JavaScript引起采用WebCore JavaScript在Android 4.4上换成了V8能直接提升JavaScript性能。

二、作用
1、显示和渲染Web页面
2、使用html文件(网络上或本地assets中)作为布局
3、可与JavaScript交互调用
注: WebView控件功能强大,除了具有一般View的属性和设置外,还可以对Url请求、页面加载、渲染、页面交互进行强大的处理。

Ⅲ androidwebview保存浏览位置

androidwebview保存浏览位置是辩纳指定位置。根据查询相关信息显示,添加webview滚动监听,保存滚动铅尺位置,配合文章id等唯一标识保存下来,在进入的时候判断位置是槐灶高否有效,然后scrollTo到指定位置。

Ⅳ Android 下的 WebView 中数据如何保存

1、Android中的WebView控件当加载html时候,会在data/应用package下生成database与cache两个文件夹如下图如示:

Url记录是保存在webviewCache.db里,而url的内容是保存在webviewCache文件夹下。
WebView中存在着两种缓存:网页数据缓存(存储打开过的页面及资源)、H5缓存(即AppCache)。



2、缓存构成
/data/data/package_name/cache/
/data/data/package_name/database/webview.db

/data/data/package_name/database/webviewCache.db

webview 会将浏览过的网页url以及网页文件(css、图片、js等)保存到数据库表中。


缓存模式(5种)
LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据
LOAD_DEFAULT: 根据cache-control决定是否从网络上取数据。
LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式
LOAD_NO_CACHE: 不使用缓存,只从网络获取数据.
LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。

Ⅳ android 怎样获取webview的缓存

请求的url记录是保存在webviewCache.db,而url的内容是保存在webviewCache文件夹下.

为了便于理解,接下来模拟一个案例,定义一个html文件,在里面显示一张图片,用WebView加载出来,然后再试着从缓存里把这张图片读取出来并显示。

第一步:新建一个Android工程命名为WebViewCache.目录结构如下:

第二步:在assets目录下新建一个html文件,命名为index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>WebViewCacheDemo</title>

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

</head>

<body>
<img src="http://img04.taobaocdn.com/imgextra/i4/608825099/T2nGXBXXpaXXXXXXXX_!!608825099.jpg_310x310.jpg"/>
</body>
</html>

第三步:修改main.xml布局文件,一个WebView控件一个Button(点击加载缓存图片用),代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/webView"/>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="从缓存读取图片"
android:id="@+id/button"/>
</LinearLayout>

第四步:修改主核心程序WebViewCacheDemo.java,这里我只加载了index.html文件,按钮事件暂时没写,代码如下:

package com.ljq.activity;

import java.io.File;
import java.io.FileInputStream;

import android.app.Activity;
import android.app.Dialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.ImageView;

public class WebViewActivity extends Activity {
private WebView webView;
private static final String url="file:///android_asset/index.html";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

webView=(WebView)findViewById(R.id.webView);
webView.loadUrl(url);
}
}

第五步:在AndroidMainifest.xml文件中加访问网络的权限:
<uses-permission android:name="android.permission.INTERNET" />

Ⅵ 当Android旋转屏幕导致横竖屏切换时,如何保存当前Fragment的实例

总结了以下几种情况:

  • 设备旋转时保存Activity的交互状态: onSaveInstanceState();

  • 设备旋转时保存Fragment的交互状态: setRetainInstance(true);

  • 设备旋转时保存WebView的数据:

  • android:configChanges="keyboardHidden|orientation|screenSize";

  • 设备旋转时保存在自定义View中绘制的图形。

如果Fragment不包含WebView,只是简单的UI View,像是TextView, Button, CheckBox, ImageView... 不建议使用setRetainInstance方法,只需要记住当前fragment的index,然后在设备旋转后根据数据重新实例化一个fragment。因为不包含大量数据,旋转的过程中几乎可以用“无缝切换”来形容。
如果包含WebView还是采用针对WebView的方法(题主的情况)。所以要看情况而定。

Ⅶ android webview加载url怎么缓存

当我们加载Html时候,会在我们data/应用package下生成database与cache两个文件夹:

我们请求的Url记录是保存在webviewCache.db里,而url的内容是保存在webviewCache文件夹下.

WebView中存在着两种缓存:网页数据缓存(存储打开过的页面及资源)、H5缓存(即AppCache)。


一、网页缓存


1、缓存构成

/data/data/package_name/cache/

/data/data/package_name/database/webview.db

/data/data/package_name/database/webviewCache.db



综合可以得知 webview 会将我们浏览过的网页url已经网页文件(css、图片、js等)保存到数据库表中


缓存模式(5种)

LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据

LOAD_DEFAULT: 根据cache-control决定是否从网络上取数据。

LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式

LOAD_NO_CACHE: 不使用缓存,只从网络获取数据.

LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。

如:www.taobao.com的cache-control为no-cache,在模式LOAD_DEFAULT下,无论如何都会从网络上取数据,如果没有网络,就会出现错误页面;在LOAD_CACHE_ELSE_NETWORK模式下,无论是否有网络,只要本地有缓存,都使用缓存。本地没有缓存时才从网络上获取。

www.360.com.cn的cache-control为max-age=60,在两种模式下都使用本地缓存数据。


总结:根据以上两种模式,建议缓存策略为,判断是否有网络,有的话,使用LOAD_DEFAULT,无网络时,使用LOAD_CACHE_ELSE_NETWORK。

设置WebView缓存模式

privatevoidinitWebView(){

mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setRenderPriority(RenderPriority.HIGH);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);//设置缓存模式
//开启DOMstorageAPI功能
mWebView.getSettings().setDomStorageEnabled(true);
//开启databasestorageAPI功能
mWebView.getSettings().setDatabaseEnabled(true);
StringcacheDirPath=getFilesDir().getAbsolutePath()+APP_CACAHE_DIRNAME;
//StringcacheDirPath=getCacheDir().getAbsolutePath()+Constant.APP_DB_DIRNAME;
Log.i(TAG,"cacheDirPath="+cacheDirPath);
//设置数据库缓存路径
mWebView.getSettings().setDatabasePath(cacheDirPath);
//设置ApplicationCaches缓存目录
mWebView.getSettings().setAppCachePath(cacheDirPath);
//开启ApplicationCaches功能
mWebView.getSettings().setAppCacheEnabled(true);
}
清除缓存

/**
*清除WebView缓存
*/
publicvoidclearWebViewCache(){

//清理Webview缓存数据库
try{
deleteDatabase("webview.db");
deleteDatabase("webviewCache.db");
}catch(Exceptione){
e.printStackTrace();
}

//WebView缓存文件
FileappCacheDir=newFile(getFilesDir().getAbsolutePath()+APP_CACAHE_DIRNAME);
Log.e(TAG,"appCacheDirpath="+appCacheDir.getAbsolutePath());

FilewebviewCacheDir=newFile(getCacheDir().getAbsolutePath()+"/webviewCache");
Log.e(TAG,"webviewCacheDirpath="+webviewCacheDir.getAbsolutePath());

//删除webview缓存目录
if(webviewCacheDir.exists()){
deleteFile(webviewCacheDir);
}
//删除webview缓存缓存目录
if(appCacheDir.exists()){
deleteFile(appCacheDir);
}
}
热点内容
我的世界国际服创建服务器pc 发布:2024-11-28 07:20:53 浏览:772
编译原理LR分析法pdf 发布:2024-11-28 07:17:41 浏览:263
安卓光遇版本怎么看 发布:2024-11-28 06:29:52 浏览:870
oraclesql加密 发布:2024-11-28 06:29:15 浏览:900
图片缓存工具 发布:2024-11-28 06:29:15 浏览:962
有文件夹删不掉怎么办 发布:2024-11-28 06:22:50 浏览:526
python3怎么用 发布:2024-11-28 06:10:58 浏览:255
安卓盒子内存小怎么办 发布:2024-11-28 06:10:57 浏览:809
车企减配哪些配置好 发布:2024-11-28 05:55:18 浏览:674
传说对决上传照片 发布:2024-11-28 05:49:18 浏览:465