當前位置:首頁 » 安卓系統 » 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);
}
}
熱點內容
預編譯查詢 發布:2024-11-28 05:32:35 瀏覽:312
山東青島iptv設置密碼是多少 發布:2024-11-28 05:30:26 瀏覽:315
小鵬的解壓 發布:2024-11-28 05:10:07 瀏覽:21
ibm存儲售後 發布:2024-11-28 05:00:39 瀏覽:32
python監控進程腳本 發布:2024-11-28 04:54:47 瀏覽:180
android載入html頁面 發布:2024-11-28 04:54:38 瀏覽:901
噻苯隆如何配置 發布:2024-11-28 04:53:56 瀏覽:395
普通電腦改伺服器風道風罩 發布:2024-11-28 04:52:28 瀏覽:454
什麼安卓手機像8p一樣 發布:2024-11-28 04:43:17 瀏覽:225
連接資料庫參數 發布:2024-11-28 04:43:15 瀏覽:808