Android 日常開發(28) Webview緩存設置以及緩存清理辦法

前言

最近項目中用到這個東西,這裏就順便扯一扯

一般配置

 this.setInitialScale(1);
        this.getSettings().setJavaScriptEnabled(true);
        this.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
    this.getSettings().setUseWideViewPort(true);
        this.getSettings().setDisplayZoomControls(true);

設置Webview緩存


        this.getSettings().setDomStorageEnabled(true);//開啓 DOM storage API 功能
        this.getSettings().setDatabaseEnabled(true);//開啓 database storage API 功能
        this.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);//設置緩存
        String cacheDirPath = getContext().getFilesDir().getAbsolutePath() + APP_CACAHE_DIRNAME;
        this.getSettings().setAppCacheEnabled(true);

        //設置  Application Caches 緩存目錄
        this.getSettings().setAppCachePath(cacheDirPath);

緩存加載策略

{LOAD_DEFAULT, //默認加載方式
LOAD_NORMAL, //廢棄
LOAD_CACHE_ELSE_NETWORK,//優先緩存
 LOAD_NO_CACHE,//優先網絡
  LOAD_CACHE_ONLY//只使用緩存}

清理Webview緩存

  boolean clearState =  SharedPref.getInstance(getContext()).getBoolean(CLEAR_WEBVIEW_CACHE,false);
        if (clearState) {
            clearCache(true);
            SharedPref.getInstance(getContext()).putBoolean(CLEAR_WEBVIEW_CACHE, false);
        }

微信支付,支付寶支付拉起

@Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                url = request.getUrl().toString();
                String scheme = request.getUrl().getScheme();

                if (!TextUtils.isEmpty(scheme)) {
                    if (scheme.contains("weixin") || scheme.contains("alipays") || scheme.contains("tel")) {
                        //類型我目前用到的是微信、支付寶、撥號 三種跳轉方式,其他類型自加
                        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                        startActivity(intent);
                        return true;
                    }
                }
                //之前無法拉起微信支付跟這個有關
                //切記不能使用註釋方法進行處理
                //webview.loadurl("www")
                //return true
                return super.shouldOverrideUrlLoading(view, url);
            }

如果使用註釋裏面的方法,將會導致重定向地址會增加history,這樣的話,返回上一頁又會再一次重定向到支付頁面,如果使用了頁面加載策略本地優先!!!特別注意

結束語

這個裏面的內容我就不仔細整理了,有問題直接問!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章