# FastWebView **Repository Path**: huangwm/fast-web-view ## Basic Information - **Project Name**: FastWebView - **Description**: WebView提速方案总结 - **Primary Language**: Android - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2021-11-16 - **Last Updated**: 2025-07-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: Android ## README # WebView提速方案技术点总结 - 创建单例模式WebViewPool缓存池,通过IdleHandler 在当前主线程消息队列空闲的时候去执行WebView预加载并存入缓存池当中,保证预加载操作不会影响到当前主线程任务。 - android中对应的WebView创建是需要依赖于Activity,所以在从缓存池中取出WebView的时候可以通过MutableContextWrapper(Context包装类)来替换baseContext,使其达到WebView Context 和最终的 Context 之间的一致性。 - 封装WebView,使用Lifecycle组件监听Activity生命周期,在Activity销毁的时候释放WebView。 - 使用第三方库CacheWebView做为资源缓存,达到更快的加载目的,原理是WebViewClient提供了shouldInterceptRequest方法用于支持外部去拦截请求,通过该方法来主动拦截并完成资源的加载操作,使用OkHttp来代理实现网络请求和设置OkHttp Cache自定义缓存大小来实现资源缓存,可以用于图片、HTML、JS、CSS 等多种类型,主要是WebView 自带的缓存机制允许的最大缓存空间是比较小的。 - 建议如果项目中H5页面风格相对固定,可以在工程里预置离线包(公共html、css、js),由Native端来请求正文数据再通过JS将正文数据传给H5,达到快速展示的目的。