android緩存htmljs,Android緩存 Xamarin

本文目錄一覽:

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

titleWebViewCacheDemo/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=””/

/body

/html

第三步:修改main.xml布局文件,一個WebView控制項一個Button(點擊載入緩存圖片用),代碼如下:

?xml version=”1.0″ encoding=”utf-8″?

LinearLayout xmlns: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=””;

@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不清緩存js不生效,js調用不到是為什麼?求大神幫忙

樓主是想在js里調用activity里的方法嗎? web是需要經過設置才能調用activity的噢

webView = (WebView) this.findViewById(R.id.webView);

webView.addJavascriptInterface(new JsObject(), TAG); //設置javaScript可用於操作Activity類

webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); //設置無邊框

WebSettings settings = webView.getSettings(); //獲取webView的設置對象

settings.setJavaScriptEnabled(true); //允許使用javascript腳本語言

settings.setSupportZoom(false); //設置可以支持縮放

settings.setBuiltInZoomControls(false); //隱藏webview縮放按鈕

settings.setUseWideViewPort(true); //窗口

settings.setLoadWithOverviewMode(true); //界面載入模式

settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); //web內容強制滿屏

注意這個TAG js是就需要用這個來調用activity的例如我的TAG = “Activity”

那js里的調用方式就是window.Activity.方法名

Android的webview里怎麼用HttpResponseCache

WebView的緩存可以分為頁面緩存和數據緩存。

頁面緩存是指載入一個網頁時的html、JS、CSS等頁面或者資源數據。這些緩存資源是由於瀏覽器的行為而產生,開發者只能通過配置HTTP響應頭影響瀏覽器的行為才能間接地影響到這些緩存數據。

他們的索引存放在/data/data/package_name/databases下。他們的文件存放在/data/data/package_name/cache/xxxwebviewcachexxx下。文件夾的名字在2.x和4.x上有所不同,但都文件夾名字中都包含webviewcache。

數據緩存分為兩種:AppCache和DOM Storage(Web Storage)。他們是因為頁面開發者的直接行為而產生。所有的緩存數據都由開發者直接完全地掌控。

AppCache使我們能夠有選擇的緩衝web瀏覽器中所有的東西,從頁面、圖片到腳本、css等等。尤其在涉及到應用於網站的多個頁面上的CSS和JavaScript文件的時候非常有用。其大小目前通常是5M。

在Android上需要手動開啟(setAppCacheEnabled),並設置路徑(setAppCachePath)和容量(setAppCacheMaxSize)

Android中Webkit使用一個db文件來保存AppCache數據(my_path/ApplicationCache.db)

如果需要存儲一些簡單的用key/value對即可解決的數據,DOM Storage是非常完美的方案。根據作用範圍的不同,有Session Storage和Local Storage兩種,分別用於會話級別的存儲(頁面關閉即消失)和本地化存儲(除非主動刪除,否則數據永遠不會過期)。

在Android中可以手動開啟DOM Storage(setDomStorageEnabled),設置存儲路徑(setDatabasePath)

Android中Webkit會為DOM Storage產生兩個文件(my_path/localstorage/http_h5.m.taobao.com_0.localstorage和my_path/localstorage/Databases.db)

另外,在Android中清除緩存時,如果需要清除Local Storage的話,僅僅刪除Local Storage的本地存儲文件是不夠的,內存裡面有緩存數據。如果再次進入頁面,Local Storage中的緩存數據同樣存在。需要殺死程序運行的當前進程再重新啟動才可以。

HTML5的離線應用功能可以使得WebApp即使在網路斷開的情況下仍能正常使用,這是個非常有用的功能。近來工作中也要用到HTML5離線應用功能,由於是在Android平台上做,所以自然而然的選擇Webview來解析網頁。但如何使Webivew支持HTML5離線應用功能呢,經過反覆摸索和上網查找資料,反覆做試驗終於成功了。

android 顯示本地html,js和css文件應該放在什麼目錄上

你好。

根據你的描述,

android 顯示本地html,js和css文件應該放在什麼位置,

關鍵是你的html引用的目錄地址是什麼,放在同一個文件夾下最好

關於html緩存設置

通過HTTP的META設置expires和cache-control

指令不區分大小寫,並且具有可選參數,可以用令牌或者帶引號的字元串語法。多個指令以逗號分隔。

客戶端可以在HTTP請求中使用的標準 Cache-Control 指令。

Cache-Control: max-stale[=seconds]

Cache-Control: min-fresh=seconds

Cache-control: no-cache

Cache-control: no-store

Cache-control: no-transform

Cache-control: only-if-cached

伺服器可以在響應中使用的標準 Cache-Control 指令。

Cache-control: no-cache

Cache-control: no-store

Cache-control: no-transform

Cache-control: public

Cache-control: private

Cache-control: proxy-revalidate

Cache-Control: max-age=seconds

Cache-control: s-maxage=seconds

拓展緩存指令不是HTTP緩存標準的一部分,使用前請注意檢查 兼容性 !

Cache-control: immutable

Cache-control: stale-while-revalidate=seconds

Cache-control: stale-if-error=seconds

public

表明響應可以被任何對象(包括:發送請求的客戶端,代理伺服器,等等)緩存。

private

表明響應只能被單個用戶緩存,不能作為共享緩存(即代理伺服器不能緩存它)。

no-cache

強制所有緩存了該響應的緩存用戶,在使用已存儲的緩存數據前,發送帶驗證器的請求到原始伺服器

only-if-cached

表明如果緩存存在,只使用緩存,無論原始伺服器數據是否有更新

max-age=seconds

設置緩存存儲的最大周期,超過這個時間緩存被認為過期(單位秒)。與Expires相反,時間是相對於請求的時間。

s-maxage=seconds

覆蓋max-age 或者 Expires 頭,但是僅適用於共享緩存(比如各個代理),並且私有緩存中它被忽略。

max-stale[=seconds]

表明客戶端願意接收一個已經過期的資源。 可選的設置一個時間(單位秒),表示響 應不能超過的過時時間。

min-fresh=seconds

表示客戶端希望在指定的時間內獲取最新的響應。

must-revalidate

緩存必須在使用之前驗證舊資源的狀態,並且不可使用過期資源。

proxy-revalidate

與must-revalidate作用相同,但它僅適用於共享緩存(例如代理),並被私有緩存忽略。

immutable

表示響應正文不會隨時間而改變。資源(如果未過期)在伺服器上不發生改變,因此客戶端不應發送重新驗證請求頭(例如If-None-Match或If-Modified-Since)來檢查更新,即使用戶顯式地刷新頁面。在Firefox中,immutable只能被用在 https:// transactions.

發送如下指令可以關閉緩存。此外,可以參考Expires 和 Pragma 標題。

對於應用程序中不會改變的文件,你通常可以在發送響應頭前添加積極緩存。這包括例如由應用程序提供的靜態文件,例如圖像,CSS文件和JavaScript文件。另請參閱Expires標題。

緩存主要兩個策略 強制緩存 ,協商緩存

強制緩存就是設置本地資源html img js等等緩存多長時間 超過時間就去伺服器端取。

協商緩存就是每次都詢問伺服器資源是否已經過期 沒有過期就使用緩存 已經過期就從伺服器上重新取。

緩存流程可以分三個階段 本地緩存,協商緩存 ,緩存失敗

現在的vue項目里都不是這樣緩存的 我個人感覺這是在靜態頁面時的緩存辦法

現在都是webpack打包時通過 hash chunkhash contenthash來決定緩存方式 主要就是在請求的文件名稱後面加一個id 來判斷文件是否已經更新。

android webview 遠程 html如何載入本地js

先把html文件下載到本地,然後更改html中js的路徑為本地路徑之後進行調用。

1.需要先寫一個 LocalFileContentProvider

public class LocalFileContentProvider extends ContentProvider {

public static final String URI_PREFIX = “content://com.youpackage”;//這裡更改為你的包名

public static String constructUri(String url) {

Uri uri = Uri.parse(url);

return uri.isAbsolute() ? url : URI_PREFIX + url;

}

@Override

public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {

File file = new File(uri.getPath());

ParcelFileDescriptor parcel = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);

return parcel;

}

@Override

public boolean onCreate() {

return true;

}

@Override

public int delete(Uri uri, String s, String[] as) {

throw new UnsupportedOperationException(“Not supported by this provider”);

}

@Override

public String getType(Uri uri) {

throw new UnsupportedOperationException(“Not supported by this provider”);

}

@Override

public Uri insert(Uri uri, ContentValues contentvalues) {

throw new UnsupportedOperationException(“Not supported by this provider”);

}

@Override

public Cursor query(Uri uri, String[] as, String s, String[] as1, String s1) {

throw new UnsupportedOperationException(“Not supported by this provider”);

}

@Override

public int update(Uri uri, ContentValues contentvalues, String s, String[] as) {

throw new UnsupportedOperationException(“Not supported by this provider”);

}

}

2. 類似 jsUrl為網路端url jsPath為本地路徑 data為html文件的字元串內容

data = data.replace(jsUrl, LocalFileContentProvider.URI_PREFIX+jsPath);

mWebView.loadDataWithBaseURL(“”, data, “text/html”, “UTF-8”, “”);

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/153371.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-14 03:05
下一篇 2024-11-14 03:05

相關推薦

  • Python 數據緩存及其應用

    本文將為大家詳細介紹Python數據緩存,並提供相關代碼示例。 一、Python 數據緩存基礎概念 Python 是一種解釋型語言,每次執行完一條語句後就會將內存中的結果清空,如果…

    編程 2025-04-29
  • Python緩存圖片的處理方式

    本文將從多個方面詳細闡述Python緩存圖片的處理方式,包括緩存原理、緩存框架、緩存策略、緩存更新和緩存清除等方面。 一、緩存原理 緩存是一種提高應用程序性能的技術,在網路應用中流…

    編程 2025-04-29
  • Android ViewPager和ScrollView滑動衝突問題

    Android開發中,ViewPager和ScrollView是兩個常用的控制項。但是當它們同時使用時,可能會發生滑動衝突的問題。本文將從多個方面介紹解決Android ViewPa…

    編程 2025-04-28
  • Android如何點擊其他區域收起軟鍵盤

    在Android應用中,當輸入框獲取焦點彈出軟鍵盤後,我們希望能夠點擊其他區域使軟鍵盤消失,以提升用戶體驗。本篇文章將說明如何實現這一功能。 一、獲取焦點並顯示軟鍵盤 在Andro…

    編程 2025-04-28
  • Android Studio HUD 實現指南

    本文將會以實例來詳細闡述如何在 Android Studio 中使用 HUD 功能實現菊花等待指示器的效果。 一、引入依賴庫 首先,我們需要在 build.gradle 文件中引入…

    編程 2025-04-27
  • Android和Vue3混合開發方案

    本文將介紹如何將Android和Vue3結合起來進行混合開發,以及其中的優勢和注意事項。 一、環境搭建 在進行混合開發之前,需要搭建好相應的開發環境。首先需要安裝 Android …

    編程 2025-04-27
  • Android Java Utils 可以如何提高你的開發效率

    Android Java Utils 是一款提供了一系列方便實用的工具類的 Java 庫,可以幫助開發者更加高效地進行 Android 開發,提高開發效率。本文將從以下幾個方面對 …

    編程 2025-04-27
  • Java圖片緩存的實現與優化

    Java中的圖片緩存是Web開發中常用的技術,它可以提高網頁的載入速度和用戶體驗。本文將從以下三個方面對Java圖片緩存進行詳細闡述: 一、圖片緩存的基本實現 圖片緩存技術是指將一…

    編程 2025-04-27
  • Android JUnit測試完成程序自動退出決方法

    對於一些Android JUnit測試的開發人員來說,程序自動退出是一個經常面臨的困擾。下面從多個方面給出解決方法。 一、檢查測試代碼 首先,我們應該仔細檢查我們的測試代碼,確保它…

    編程 2025-04-25
  • Hibernate緩存詳解

    在關係型資料庫中,為了減少重複查詢並提高查詢效率,採用緩存技術是非常常見的做法。Hibernate緩存是Hibernate框架為了加速讀取數據而提供的一種機制。通過緩存,Hiber…

    編程 2025-04-25

發表回復

登錄後才能評論