webView本地缓存

来源:互联网 发布:java自动包装功能 编辑:程序博客网 时间:2024/06/05 04:02

用的aSampleCache做的缓存。但是webView页面怎么缓存以前并不知道,网上一查,居然webview自带缓存,才疏学浅,于是乎,做了一个简单的demo

public class MainActivity extends Activity {    private WebView webView;    private String url =" http://www.3dmgame.com/";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_main);        initView();    }    private void initView() {        webView = (WebView) findViewById(R.id.activity_webview);        webView.requestFocus();        webView.setHorizontalScrollBarEnabled(false);        webView.setVerticalScrollBarEnabled(false);        initWebView();    }    @SuppressWarnings("deprecation")    @SuppressLint("SetJavaScriptEnabled")    private void initWebView() {        webView.getSettings().setJavaScriptEnabled(true);        // 设置 缓存模式        if (StateTest.isNetworkAvailable(MainActivity.this)) {            webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);        } else {            webView.getSettings().setCacheMode(                    WebSettings.LOAD_CACHE_ELSE_NETWORK);        }        // webView.getSettings().setBlockNetworkImage(true);// 把图片加载放在最后来加载渲染        webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);        // 支持多窗口        webView.getSettings().setSupportMultipleWindows(true);        // 开启 DOM storage API 功能        webView.getSettings().setDomStorageEnabled(true);        // 开启 Application Caches 功能        webView.getSettings().setAppCacheEnabled(true);        onLoad();    }    @SuppressWarnings("deprecation")    @SuppressLint("SetJavaScriptEnabled")    public void onLoad() {        try {            webView.setWebViewClient(new WebViewClient() {                @Override                public void onLoadResource(WebView view, String url) {                    Log.i("tag", "onLoadResource url=" + url); // 开始加载                    super.onLoadResource(view, url);                }                @Override                public boolean shouldOverrideUrlLoading(WebView webview,                                                        String url) {                    Log.i("tag", "intercept url=" + url);                    // 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边                    webview.loadUrl(url);                    return true;                }                @Override                public void onPageFinished(WebView view, String url) {                    String title = view.getTitle(); // 得到网页标题                    Log.e("tag", "onPageFinished WebView title=" + title);                }                @Override                public void onReceivedError(WebView view, int errorCode,                                            String description, String failingUrl) {                    Toast.makeText(getApplicationContext(), "加载错误",                            Toast.LENGTH_LONG).show();                }            });            webView.loadUrl(url);        } catch (Exception e) {            return;        }    }    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {            webView.goBack(); // goBack()表示返回WebView的上一页面            return true;        } else {            finish();        }        return super.onKeyDown(keyCode, event);    }    /***     * 防止WebView加载内存泄漏     */    @Override    protected void onDestroy() {        super.onDestroy();        webView.removeAllViews();        webView.destroy();    }}

这里写图片描述
这里写图片描述
这样一个简单的功能就结束了
对了,记得添加权限

<uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>