android h5使用缓存_webview和H5 清除缓存和缓存文件删除。

import java.io.File;

import android.app.Activity;

import android.graphics.Bitmap;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.webkit.JsPromptResult;

import android.webkit.JsResult;

import android.webkit.WebChromeClient;

import android.webkit.WebSettings;

import android.webkit.WebSettings.RenderPriority;

import android.webkit.WebView;

import android.webkit.WebViewClient;

import android.widget.RelativeLayout;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extendsActivity {

privatestaticfinal String APP_CACAHE_DIRNAME ="/webcache";

privateTextView tv_topbar_title;

privateRelativeLayout rl_loading;

privateWebView mWebView;

privateString url;

@Override

protectedvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

url ="http://www.sina.com.cn";

initView();

}

privatevoidinitView() {

tv_topbar_title = (TextView) findViewById(R.id.tv_topbar_title);

rl_loading = (RelativeLayout) findViewById(R.id.rl_loading);

mWebView = (WebView) findViewById(R.id.mWebView);

initWebView();

mWebView.setWebViewClient(newWebViewClient() {

@Override

publicvoidonLoadResource(WebView view, String url) {

super.onLoadResource(view, url);

}

@Override

publicbooleanshouldOverrideUrlLoading(WebView webview, String url) {

webview.loadUrl(url);

returntrue;

}

@Override

publicvoidonPageStarted(WebView view, String url, Bitmap favicon) {

rl_loading.setVisibility(View.VISIBLE);// 显示加载界面

}

@Override

publicvoidonPageFinished(WebView view, String url) {

String title = view.getTitle();

tv_topbar_title.setText(title);

tv_topbar_title.setVisibility(View.VISIBLE);

rl_loading.setVisibility(View.GONE);// 隐藏加载界面

}

@Override

publicvoidonReceivedError(WebView view,interrorCode, String description, String failingUrl) {

rl_loading.setVisibility(View.GONE);// 隐藏加载界面

Toast.makeText(getApplicationContext(),"",

Toast.LENGTH_LONG).show();

}

});

mWebView.setWebChromeClient(newWebChromeClient() {

@Override

publicbooleanonJsAlert(WebView view, String url, String message, JsResult result) {

Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();

result.confirm();

returntrue;

}

@Override

publicbooleanonJsConfirm(WebView view, String url, String message, JsResult result) {

returnsuper.onJsConfirm(view, url, message, result);

}

@Override

publicbooleanonJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {

returnsuper.onJsPrompt(view, url, message, defaultValue, result);

}

});

mWebView.loadUrl(url);

}

privatevoidinitWebView() {

mWebView.getSettings().setJavaScriptEnabled(true);

mWebView.getSettings().setRenderPriority(RenderPriority.HIGH);

mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); //设置 缓存模式选择自己想要的模式

// 开启 DOM storage API 功能

mWebView.getSettings().setDomStorageEnabled(true);

//开启 database storage API 功能

mWebView.getSettings().setDatabaseEnabled(true);

String cacheDirPath = getFilesDir().getAbsolutePath()+APP_CACAHE_DIRNAME;

//设置数据库缓存路径

mWebView.getSettings().setDatabasePath(cacheDirPath);

//设置 Application Caches 缓存目录

mWebView.getSettings().setAppCachePath(cacheDirPath);

//开启 Application Caches 功能

mWebView.getSettings().setAppCacheEnabled(true);

}

/**

* 清除WebView缓存 在onDestroy调用这个方法就可以了

*/

publicvoidclearWebViewCache(){

//清理Webview缓存数据库

try{

deleteDatabase("webview.db");

deleteDatabase("webviewCache.db");

}catch(Exception e) {

e.printStackTrace();

}

//WebView 缓存文件

File appCacheDir =newFile(getFilesDir().getAbsolutePath()+APP_CACAHE_DIRNAME);

Log.e(TAG,"appCacheDir path="+appCacheDir.getAbsolutePath());

File webviewCacheDir =newFile(getCacheDir().getAbsolutePath()+"/webviewCache");

Log.e("path===","webviewCacheDir path="+webviewCacheDir.getAbsolutePath());

//删除webview 缓存目录

if(webviewCacheDir.exists()){

deleteFile(webviewCacheDir);

}

//删除webview 缓存 缓存目录

if(appCacheDir.exists()){

deleteFile(appCacheDir);

}

}

/**

* 递归删除 文件/文件夹

*

* @param file

*/

publicvoiddeleteFile(File file) {

Log.i(TAG,"delete file path="+ file.getAbsolutePath());

if(file.exists()) {

if(file.isFile()) {

file.delete();

}elseif(file.isDirectory()) {

File files[] = file.listFiles();

for(inti = 0; i < files.length; i++) {

deleteFile(files[i]);

}

}

file.delete();

}else{

Log.e("delete===","delete file no exists "+ file.getAbsolutePath());

}

}

}


版权声明:本文为weixin_29305337原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。