android webview 预加载,H5预加载的实现

本文探讨了Android WebView预加载的重要性,以及多种预加载策略,包括直接下载HTML、使用隐藏WebViewFragment、依赖WebView缓存以及手动缓存。分析了每种方法的优缺点,并详细介绍了利用WebViewClient和shouldInterceptRequest方法实现预加载及缓存的复杂方案,以提高用户体验。同时,提出了预加载网页被重复下载的问题及解决方案。
摘要由CSDN通过智能技术生成

预加载说小了就是个提前load,说大了,就是HybridApp的最基础功能。

Html5官方有个prefetch的attribute,用来做页面间的prefetch。其实在native跳h5容器的过程中更需要这种流程,否则很容易导致体验劣化。

其实方案蛮多的:

直接下载url + WebView#loadDataWithBaseURL

优点是简单,缺点就是只能预加载下个页面的html内容,这样一来,实际效果很差,常常只能预加载1%不到的数据量

用隐藏的WebViewFragment加载,需要时做动画显示

优点也是速度最快,坑就非常多了:

html加载过程完整,控制行为需要在WebChromeClient/WebViewClient做非常多的分支判断

需要兼容动画效果

需要控制back

最重要的,会导致js中的window#onload之类的函数不合理的触发,引发逻辑问题

用WebView提前load,靠WebView的cache

仍然不复杂,因为在预加载时可以禁掉js,真正加载的时候允许js,上一个方案的控制部分就解决了。问题在于,WebView的Cache是一体的,一清全清,一旦需要清理缓存那就会出现各种各样的全局问题了。

用WebView提前load,手写缓存

最复杂的方案,但是目前看没什么坑。

具体来说:

prefetch阶段,重写WebViewClient#onLoadResource,将所有资源都下载到本地

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值