我正在構建一個原生應用,其中(至少)一部分是一個Web應用,僞裝成本地應用。 Facebook向我們展示了使用良好緩存的重要性,我在緩存網頁,因此當您第二次加載它時,它就像是應用程序的本地部分。但是,按照我設置的方式,緩存的內容是永久的。因此,如果我在服務器上更改某些內容,舊的緩存內容仍會顯示。如何刷新網頁視圖的緩存?
以下是我希望以優先順序實現的結果,1是最優選的。
- 無論緩存的內容都先顯示。在後臺,頁面檢查新版本,但只在內容不同時重新加載。
- 或先緩存的內容顯示。在後臺頁面刷新和重新加載。
- 或緩存的內容在X時間(一週?)後被抹掉,強制頁面重新加載。
最後一個選項是最不可取的,因爲每次頁面重新加載時,感覺都很慢,很可怕。第二個選擇是我的本地活動的行爲方式(首先顯示緩存,在後臺刷新,但如果用戶在此期間向下滾動,則會跳轉到列表頂部)。首先是絕對完美的!
這是我目前使用的代碼。
WebView wv = (WebView) v.findViewById(ref_id);
wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setDatabaseEnabled(true);
String appDBPath = v.getContext().getApplicationContext().getDatabasePath("AppConstructor").getAbsolutePath();
wv.setWebChromeClient(new WebChromeClient() {
@Override
public void onReachedMaxAppCacheSize(long spaceNeeded,
long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
quotaUpdater.updateQuota(spaceNeeded * 2);
}
@Override
public void onExceededDatabaseQuota(String url,
String databaseIdentifier, long currentQuota,
long estimatedSize, long totalUsedQuota,
WebStorage.QuotaUpdater quotaUpdater) {
quotaUpdater.updateQuota(estimatedSize * 2);
}
});
wv.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
wv.getSettings().setDomStorageEnabled(true);
wv.getSettings().setAppCacheMaxSize(1024 * 1024 * 8);
String appCachePath = v.getContext().getApplicationContext().getCacheDir().getAbsolutePath();
wv.getSettings().setAppCachePath(appCachePath);
wv.getSettings().setAllowFileAccess(true);
wv.getSettings().setAppCacheEnabled(true);
wv.loadUrl(ref_arg1);
Core x = new Core();
wv.addJavascriptInterface(x.new JavaScriptInterface(v.getContext()),"Android");
任何幫助將不勝感激!
your'e genius !!。 – xamDev