Android中清楚webView缓存

本文介绍了一种在自定义WebView中清除缓存的方法,并提供了一个递归删除文件的示例函数。该方法可以根据指定的时间参数删除过期的缓存文件。

在项目中对于自定义的webview,当退出的时候可能需要把缓存清除。下面就来看看代码:


点击按钮:调用方法:clearCacheFolder(this.getCacheDir(), System.currentTimeMillis());

/**
	 * 清楚webView缓存   
	 * @param dir
	 * @param numDays
	 * @return
	 */
	private int clearCacheFolder(File dir, long numDays) {          
	    int deletedFiles = 0;         
	    if (dir!= null && dir.isDirectory()) {             
	        try {                
	            for (File child:dir.listFiles()) {    
	                if (child.isDirectory()) {              
	                    deletedFiles += clearCacheFolder(child, numDays);          
	                }    
	                if (child.lastModified() < numDays) {     
	                    if (child.delete()) {                   
	                        deletedFiles++;           
	                    }    
	                }    
	            }             
	        } catch(Exception e) {       
	            e.printStackTrace();    
	        }     
	    }       
	    return deletedFiles;     
	}


在网上找到了其他相关的解决,大家可以看看

http://www.open-open.com/lib/view/open1392188052301.html

http://www.oschina.net/code/snippet_163910_6180

http://blog.youkuaiyun.com/shichaosong/article/details/7949580


<think> 嗯,用户需要了解Android中X5 WebView的使用方法。结合用户提供的两份站内引用材料,我需要系统地整理X5 WebView的核心使用流程。 引用[1]提到账号同步场景,引用[2]展示了Application初始化代码,这些都是关键线索。用户关注点应该集中在:基础集成、JS交互、状态同步这三个核心模块。 从技术实现层面考虑,应该分四个层次说明:首先是环境初始化,需要强调内核加载的异步特性,这点在引用[2]的PreInitCallback体现得很楚;其次是WebView实例配置,要包含常用设置项的典型配置值;然后是JS交互设计,双向调用机制需要分别说明客户端调JS和JS调客户端的方法;最后是登录状态的同步方案,引用[1]的场景正好作为典型案例。 特别注意用户可能遇到的坑:内核初始化失败时系统内核的自动回退机制(引用[2]的Log提示)、JS接口的安全注入时机(必须在page开始加载前完成)、Cookie同步的域名一致性要求。这些在官方文档里都是重点警示内容。 扩展应用场景时,准备提到微信环境适配这个高频需求,因为X5内核的优势在此特别明显。性能优化建议考虑预加载策略,虽然用户没直接问,但实际开发中很重要。 </think> 下面是根据X5内核文档整理的完整使用指南,包含核心流程和代码示例: ### 一、基础集成步骤 1. **添加依赖**(build.gradle) ```gradle dependencies { implementation 'com.tencent.tbs.tbssdk:sdk:43939' } ``` 2. **初始化X5内核**(Application中) ```java public class App extends Application { @Override public void onCreate() { super.onCreate(); QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() { @Override public void onCoreInitFinished() {} @Override public void onViewInitFinished(boolean success) { Log.d("X5", "内核加载" + (success ? "成功" : "失败")); } }); } } ``` 3. **XML布局声明** ```xml <com.tencent.smtt.sdk.WebView android:id="@+id/x5WebView" android:layout_width="match_parent" android:layout_height="match_parent"/> ``` ### 二、核心功能实现 1. **网页加载基础用法** ```java X5WebView webView = findViewById(R.id.x5WebView); webView.loadUrl("https://your-url.com"); // 启用JavaScript(默认禁用) WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); ``` 2. **客户端与H5状态同步方案**(解决登录态同步问题) ```java // 客户端注入Cookie(同步登录态) CookieManager manager = CookieManager.getInstance(); manager.setCookie("your-domain.com", "userToken=abc123; Path=/"); manager.flush(); // 网页加载后通知H5更新状态 webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { view.loadUrl("javascript:updateLoginState(true)"); } }); ``` 3. **JS与原生交互** ```java // 注册Java方法供JS调用 webView.addJavascriptInterface(new JsBridge(), "AndroidBridge"); class JsBridge { @JavascriptInterface public void showToast(String msg) { Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); } } // 调用JS函数 webView.evaluateJavascript("javascript:getUserInfo()", value -> { Log.d("JS-RETURN", value); }); ``` ### 三、高级配置项 ```java // 硬件加速(视频播放必备) webView.setLayerType(View.LAYER_TYPE_HARDWARE, null); // 文件上传支持 webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) { // 处理文件选择逻辑 return true; } }); // 缓存策略(建议混合模式) settings.setCacheMode(WebSettings.LOAD_DEFAULT); ``` ### 四、注意事项 1. **内核加载失败处理**:在`onViewInitFinished(false)`时降级到系统WebView 2. **Cookie同步时效性**:需在页面加载前注入Cookie(使用`CookieSyncManager`) 3. **内存泄漏防护**: ```java @Override protected void onDestroy() { if (webView != null) { webView.destroy(); webView = null; } super.onDestroy(); } ``` > 典型应用场景:微信内置浏览器、QQ浏览器都是基于X5内核,其优势在于**视频播放能力增强**、**文件上传兼容性好**、**H5页面渲染一致性高**,尤其在低端安卓设备上表现优于系统WebView[^1][^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值