2011-07-01 33 views
7

Tôi đã có một WebView trong ứng dụng của mình. Khi người dùng đăng xuất khỏi ứng dụng của tôi, tôi muốn xóa tất cả các tài nguyên được lưu trong bộ nhớ cache mà WebView có thể đã tạo. Nhìn vào trình mô phỏng, tôi thấy các tệp sau:Xóa tất cả các mục được lưu trong bộ nhớ cache được tạo bởi một WebView?

/data 
    /data 
    /com.example.myapp 
     /cache 
     /webviewCache 
      bunch of files here.. 
     /databases 
     webview.db 
     webviewCache.db 

Có bất kỳ cuộc gọi hệ thống nào để xóa tất cả các phần tử trong/cache và/cơ sở dữ liệu hay chúng ta nên thực hiện thủ công không? Tôi lo lắng về việc làm nó bằng tay chỉ vì tôi không biết những gì các tập tin mới WebView có thể bỏ lại phía sau trong các phiên bản tương lai của android vì vậy tôi sẽ không chắc chắn tôi thực sự thanh toán bù trừ tất cả mọi thứ cho người dùng.

+0

bản sao có thể có của [Android Webview - Hoàn toàn xóa bộ nhớ cache] (http://stackoverflow.com/questions/2465432/android-webview-completely-clear-the-cache) – Reno

+0

True, tôi thấy câu trả lời đó, nhưng trang đăng xuất của tôi không có tham chiếu đến WebView gốc (sống trong một hoạt động khác). Vì vậy, sẽ không có quyền truy cập vào mWebView.clearCache (true) vv Các câu trả lời trong những câu hỏi đó dường như được sản xuất tại nhà, tự hỏi liệu có một cách "chính thức" để làm điều đó theo chỉ dẫn của google không? Hy vọng họ sẽ đưa ra câu trả lời về vấn đề này vì đây là vấn đề an ninh. – user291701

+0

Nhân đôi, tìm đúng một ở đây - http://stackoverflow.com/questions/2465432/android-webview-completely-clear-the-cache – Darpan

Trả lời

16

thử này

mWebView.clearCache(true); 
mContext.deleteDatabase("webview.db"); 
mContext.deleteDatabase("webviewCache.db"); 
+0

lỗi ứng dụng trên phiên bản froyo ...... –

3

Chỉ đăng ở đây vì cho ý kiến ​​có thể xấu xí

clearCache() sẽ làm việc vì:

Từ doc:

Xóa bộ nhớ đệm tài nguyên. Lưu ý rằng cache là một ứng dụng, vì vậy điều này sẽ xóa bộ nhớ cache cho tất cả các WebView được sử dụng.

+0

Bộ nhớ cache WebView dường như tồn tại trên ứng dụng khởi chạy lại - đó có phải là dự kiến ​​không? Và làm cách nào để xóa các mục được lưu trong bộ nhớ cache cũ hơn thời gian nhất định (như cũ hơn 1 ngày ...) – Jasper

14

Đây là mã duy nhất đã lưu ngày của tôi !!

CookieSyncManager.createInstance(this);   
CookieManager cookieManager = CookieManager.getInstance();   
cookieManager.removeAllCookie(); 

kịch bản của tôi:

  • Sau khi đăng nhập qua linkedIn với webview. Chế độ xem web lưu chi tiết đăng nhập. Tôi cần ứng dụng của mình để xóa ứng dụng này khi người dùng đăng xuất khỏi ứng dụng. Tất cả các phương pháp tiếp cận khác đã không làm việc cho tôi.
+0

Cookie phải làm gì với bộ nhớ cache? –

+0

Nó không .. nhưng câu trả lời này là dành cho những ứng dụng ghi nhật ký người dùng dựa trên webview và bộ nhớ cache rõ ràng không đăng nhập người dùng. Vì vậy, chúng ta cần xóa cookie. Cookies cũng được sử dụng để lưu trữ dữ liệu khác. Vì vậy, chúng tôi cũng cần xóa cookie. @ NicolaeSurdu – amalBit

+0

Xóa bộ nhớ cache không được đăng xuất người dùng. Cookie sẽ bị xóa bởi cơ chế đăng xuất, không phải từ ứng dụng gốc. –

Các vấn đề liên quan