Giter Site home page Giter Site logo

ryan-shz / fastwebview Goto Github PK

View Code? Open in Web Editor NEW
245.0 245.0 39.0 636 KB

自定义本地缓存策略和资源加载策略,突破原生WebView缓存限制,实现多种缓存模式,支持离线加载和预加载,可大幅提升加载速度。

License: MIT License

Java 100.00%
android cache cachewebview offline webview webviewcache

fastwebview's People

Contributors

ryan-shz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

fastwebview's Issues

Cookie拦截器中的请求拦截器似乎没有正确工作

fastCookieManager.setRequestCookieInterceptor(new CookieInterceptor() { @Override public List<Cookie> newCookies(HttpUrl url, List<Cookie> originCookies) { for (Cookie cookie : originCookies) { Log.v(TAG, "request cookies: " + cookie.toString()); } return originCookies; } });
似乎没有正确工作。setResponseCookieInterceptor 拦截器倒是拦截了。

WebViewPool

版主关于WebViewPool的代码可否先上传呀,想提前试用下。

demo有空指针异常bug

在选中使用缓存池之后,进入webview加载完github后再点击任何一个git内的链接,然后点击返回键,崩溃

WebView无法弹出软键盘问题解决

继承FastWebView时,注意构造方法 - defStyleAttr不能传0
public FastWebView(Context context, AttributeSet attrs) {
super(context, attrs, 0);
}
另外可能还需要你设置如下属性requestFocus()

请问缓存配置不是全局的吗?为啥放在fastWebView里啊?

fastWebView.setCacheConfig(new CacheConfig.Builder()
.setCacheDir(String fileDir)
.setExtensionFilter(ExtensionFilter filter)
.setVersion(int version)
.setMemorySize(int size)
.setDiskCacheSize(long diskCacheSize)
.build());
不应该只初始化一次吗? 现在如果想要使用缓存,每次创建WebVIew都要这样设置吗?

bintray-release

你好,请问bintray-release 这个插件主要做了什么工作?

又有一个奇怪的问题,请教一下

2020-06-14 22:43:35.560 25797-26208/ W/System.err: java.lang.IllegalArgumentException: statusCode can't be in the [300, 399] range.
2020-06-14 22:43:35.561 25797-26208/ W/System.err: at android.webkit.WebResourceResponse.setStatusCodeAndReasonPhrase(WebResourceResponse.java:135)
2020-06-14 22:43:35.561 25797-26208/ W/System.err: at android.webkit.WebResourceResponse.(WebResourceResponse.java:77)
2020-06-14 22:43:35.561 25797-26208/ W/System.err: at com.ryan.github.view.offline.DefaultWebResponseGenerator.generate(DefaultWebResponseGenerator.java:71)
2020-06-14 22:43:35.561 25797-26208/ W/System.err: at com.ryan.github.view.offline.OfflineServerImpl.get(OfflineServerImpl.java:66)
2020-06-14 22:43:35.561 25797-26208/ W/System.err: at com.ryan.github.view.WebViewCacheImpl.getResource(WebViewCacheImpl.java:50)
2020-06-14 22:43:35.562 25797-26208/ W/System.err: at com.ryan.github.view.InnerFastClient.loadFromWebViewCache(InnerFastClient.java:274)
2020-06-14 22:43:35.562 25797-26208/ W/System.err: at com.ryan.github.view.InnerFastClient.onIntercept(InnerFastClient.java:264)
2020-06-14 22:43:35.562 25797-26208/ W/System.err: at com.ryan.github.view.InnerFastClient.shouldInterceptRequest(InnerFastClient.java:245)
2020-06-14 22:43:35.562 25797-26208/ W/System.err: at com.android.webview.chromium.WebViewContentsClientAdapter.shouldInterceptRequest(WebViewContentsClientAdapter.java:79)
2020-06-14 22:43:35.562 25797-26208/ W/System.err: at org.chromium.android_webview.AwContents$BackgroundThreadClientImpl.shouldInterceptRequest(AwContents.java:9)
2020-06-14 22:43:35.563 25797-26208/ W/System.err: at org.chromium.android_webview.AwContentsBackgroundThreadClient.shouldInterceptRequestFromNative(AwContentsBackgroundThreadClient.java:11)

为什么要额外设置LiskLruCache

如果设置缓存模式为FastCacheMode.FORCE,为什么要加一个DiskResourceInterceptor拦截器呢?直接加大okttp缓存大小不就可以了么?反正底层用的都是DiskLruCache的逻辑?

项目

版主 请问你们的上线项目是啥 我下载了体验一下。

setCacheMode

image
代码里面在setWebViewClient已经设置了client, 然后在setCacheMode函数里面 default就没必要设置了吧

我觉得可以优化成这样:
image

发现一个错误,请教一下

020-06-11 17:49:05.700 5293-5913 W/System.err: java.lang.IllegalArgumentException: reasonPhrase can't be empty.
2020-06-11 17:49:05.700 5293-5913 W/System.err: at android.webkit.WebResourceResponse.setStatusCodeAndReasonPhrase(WebResourceResponse.java:138)
2020-06-11 17:49:05.700 5293-5913 W/System.err: at android.webkit.WebResourceResponse.(WebResourceResponse.java:76)
2020-06-11 17:49:05.701 5293-5913 W/System.err: at com.ryan.github.view.offline.DefaultWebResponseGenerator.generate(DefaultWebResponseGenerator.java:71)
2020-06-11 17:49:05.701 5293-5913 W/System.err: at com.ryan.github.view.offline.OfflineServerImpl.get(OfflineServerImpl.java:66)
2020-06-11 17:49:05.701 5293-5913 W/System.err: at com.ryan.github.view.WebViewCacheImpl.getResource(WebViewCacheImpl.java:50)
2020-06-11 17:49:05.701 5293-5913 W/System.err: at com.ryan.github.view.InnerFastClient.loadFromWebViewCache(InnerFastClient.java:274)
2020-06-11 17:49:05.701 5293-5913 W/System.err: at com.ryan.github.view.InnerFastClient.onIntercept(InnerFastClient.java:264)
2020-06-11 17:49:05.701 5293-5913 W/System.err: at com.ryan.github.view.InnerFastClient.shouldInterceptRequest(InnerFastClient.java:245)
2020-06-11 17:49:05.701 5293-5913 W/System.err: at com.android.webview.chromium.WebViewContentsClientAdapter.shouldInterceptRequest(WebViewContentsClientAdapter.java:52)
2020-06-11 17:49:05.701 5293-5913 W/System.err: at org.chromium.android_webview.AwContents$BackgroundThreadClientImpl.shouldInterceptRequest(AwContents.java:9)
2020-06-11 17:49:05.701 5293-5913 W/System.err: at org.chromium.android_webview.AwContentsBackgroundThreadClient.shouldInterceptRequestFromNative(AwContentsBackgroundThreadClient.java:11)

强制模式下怎么清理缓存

强制模式下清理缓存文件夹后需要重启app才能显示最新的页面,普通模式下清理完缓存文件夹就可以显示最新的页面,这是什么原因呢?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.