我想從網頁獲取圖像並將其保存到本地存儲中。我可以找到來自HTML
的所有圖像URL,從服務器加載這些圖像並保存它們。但我不想第二次訪問服務器,獲取已在webview
中的相同信息。所以我想知道如何從webview
加載圖像?從wevbiew獲取已加載的圖像
回答
您可以通過幾個步驟設置WebView
緩存。看看下面。
WebView webView =(WebView)findViewById(R.id.your_webView_Id);
String cacheDir = getDir(「your_WV_cache_dir」,Context.MODE_PRIVATE).getAbsolutePath(); webView.getSettings()。setAppCacheMaxSize(1024 * 1024 * 1); // 1 MB緩存限制大小> webView.getSettings()。setAppCachePath(cacheDir); webView.getSettings()。setAppCacheEnabled(true); webView.getSettings()。setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //這個常數對你很重要。如果已經下載了一次,則可以從緩存中加載daa。
您可以看看WebView.WebSettings
官方文檔中上述常數的其他可能值。
讓我知道它是否有效。
你好yugidroid。感謝您的快速反應,併爲遲到感到抱歉))這是我得到的。我在'cacheDir'目錄中只找到一個'applicationCache.db'文件。它有10個表格:'CacheGroups,sqlite_sequence,Caches,CacheWhitelistURLs,CacheAllowsAllNetworkRequests,FallbackURLs,CacheEntries,CacheResources,CacheResourceData,android_metadata'。除最後一個表格外,所有表格都是空的,只包含一個原始格式:類似於'en-EN'。我在「WebView」中打開了一些頁面後,我做了所有這些。所以很奇怪,我在緩存目錄中找不到任何信息。 – Hayk
非常歡迎您。 您是否已經嘗試查看是否有相同的內容(據推測在緩存中)可用於您的應用程序,但沒有任何類型的Internet連接? – yugidroid
是的,它似乎緩存了我需要的所有信息('HTML',圖像,'JS'文件,'CSS'文件)。我想手動創建這種緩存...通常這解決了我的問題,所以我接受這個答案。但是現在我還有一個緩存失效的問題:我想讓緩存只針對特定的URL而不是整個緩存。 – Hayk
- 1. 從UIWebView獲取加載的圖像
- 2. 獲取已加載
- 3. 如何獲取動態加載的圖像的圖像加載?
- 4. AJAX:獲取HTML並檢查圖像是否已完成加載
- 5. 從已經加載的地圖獲取標記
- 6. 獲取每個加載的圖像
- 7. 獲取ajax加載圖像的大小
- 8. 如何檢查已加載的圖像是否已加載JavaScript?
- 9. 在angularjs中獲取並加載圖像
- 10. 獲取圖像高度,然後加載
- 11. 從通用圖像加載器庫獲取位圖
- 12. 通過Python從給定的URL中獲取加載的圖像
- 13. 如何從Web上加載圖像後獲取圖像的本地路徑?
- 14. 從TripAdvisor抓取動態加載圖像
- 15. Drupal 7 - 獲取已加載的節點
- 16. 使用通用圖像加載器,但圖像獲取只加載一次
- 17. 獲取已刪除圖像的名稱
- 18. 通用圖像加載程序:從抽頭獲取ImageView對象
- 19. 從URl Android加載圖像時獲取內存泄漏
- 20. 如何在加載時從圖像中獲取顏色?
- 21. 掛鉤從佈局加載後獲取圖像
- 22. 如何從系統中獲取圖像畫布上加載HTML5
- 23. jQuery在圖像加載之前獲取圖像高度?
- 24. jquery圖像預加載獲取圖像高度
- 25. 圖像加載後獲取圖像高度
- 26. 在加載圖像之前獲取圖像大小
- 27. 當我的圖像仍然從服務器加載時,如何獲取佔位符圖像加載
- 28. 從畢加索獲取圖像uri?
- 29. jQuery - 檢查圖像已加載
- 30. 已使用jquery加載支票圖像
你有沒有想過要實現一個緩存系統? – yugidroid
在這種情況下,我想實現某種緩存。 – Hayk