2012-01-18 26 views
9

Tôi có chế độ xem web bằng cách sử dụng bộ đệm ẩn ứng dụng. Tôi đã khởi chạy ứng dụng có kết nối với mạng để tải/cache trang. Bây giờ, sau khi tắt wifi (và 3g - không có kết nối mạng), và khởi động ứng dụng, tôi nhận được hiển thị trang "android không thể tải trang". Thật kỳ lạ, nếu sau đó tôi tải lại chế độ xem web, nó sẽ tải trang từ bộ nhớ cache. Tại sao nó không tải trang này từ bộ nhớ cache nếu nó không thể kết nối với mạng?Tại sao Androidview không kiểm tra bộ nhớ cache theo mặc định?

Tôi đang sử dụng Bộ nhớ cache ứng dụng HTML5 với cache.manifest. Dưới đây là mã của tôi webview để cho phép này:

webview.getSettings().setDomStorageEnabled(true); 
webview.getSettings().setAppCacheMaxSize(1024*1024*8); 
webview.getSettings().setAppCachePath("/data/data/com.my.package/cache"); 
webview.getSettings().setAllowFileAccess(true); 
webview.getSettings().setAppCacheEnabled(true); 

Tôi cố gắng thêm trong:

weview.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 

nhưng nó đã không giúp đỡ.

+0

Khi bạn tắt wifi và/hoặc 3g, bạn đang giết bản sao của ứng dụng, trừ khi bạn đang tích cực kiểm tra, nó sẽ không biết tải từ bộ nhớ cache vì nó đã được tải từ mạng, đây là lý do tại sao khi bạn tải lại webview nó tải một cách chính xác. –

+0

@ JaredBurrows Tôi không hiểu ý bạn là gì, nhưng luồng này là: 1. Tải ứng dụng từ mạng. 1a. Trang được lưu trong bộ nhớ cache. 2. Giết ứng dụng. 3. Kill wifi (không có 3g trên thiết bị) 4. Tải ứng dụng. 4a. Trang hiển thị "Android không thể tải trang" 5. Làm mới chế độ xem web. 5a. Trang tải chính xác từ bộ nhớ cache – xdumaine

+0

Bạn làm mới webview như thế nào? –

Trả lời

0

Kiểm tra xem URL bạn đang yêu cầu có phải là chuyển hướng hay không. Nếu có, bộ nhớ cache cũng sẽ trỏ đến chuyển hướng đó và WebView sẽ không đọc chuyển hướng kết quả từ bộ nhớ cache.

Tôi mất một thời gian để tìm ra rằng đây là những gì đã xảy ra trong trường hợp của tôi.

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