簡體   English   中英

Android WebView,從緩存加載並嘗試刷新

[英]Android WebView, load from cache and attempt to refresh

我正在嘗試創建一個加載網頁並將其存儲在緩存中的小型應用程序。 刷卡刷新時,它必須嘗試更新,但是如果沒有Internet訪問,則應保留當前版本。

目前,我已經可以“刷卡強制刷新”和“從緩存加載”了,但是似乎無法弄清楚如何“盡可能嘗試刷新”。

swipeRefreshLayout = findViewById(R.id.swipe);
swipeRefreshLayout.setOnRefreshListener(
        new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                myWebView.clearCache(true);
                myWebView.reload();
            }
        }
);

WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAppCacheEnabled(true);
webSettings.setAppCachePath(getBaseContext().getCacheDir().getPath());
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

myWebView.loadUrl(config.getString("website_root"));
myWebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        if (!swipeRefreshLayout.isRefreshing()) {
            swipeRefreshLayout.setRefreshing(true);
        }
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        swipeRefreshLayout.setRefreshing(false);
    }
});

基於WebSettings.LOAD_CACHE_ELSE_NETWORK文檔

緩存資源可用時,即使它們已過期,也要使用它們。 否則從網絡加載資源

因此,您總是從緩存加載視圖。

您可以使用以下方法:1.檢查連接性:

private boolean isNetworkConnected() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

    return cm.getActiveNetworkInfo() != null;
}
  1. 之前而不是設置:

     WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setAppCacheEnabled(true); webSettings.setAppCachePath(getBaseContext().getCacheDir().getPath()); webSettings.setCacheMode(isNetworkConnected()?WebSettings.LOAD_NO_CACHE: WebSettings.LOAD_CACHE_ONLY); 
  2. 在滑動以刷新時,您可以執行以下操作:

     swipeRefreshLayout.setOnRefreshListener( new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { if(isNetworkConnected()){ ... myWebView.reload(); } else { //Do something for non-connectivity } } }); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM