2012-01-18 7 views
9

Cách tốt nhất để buộc Android lưu trữ một lần xem web vào một phương tiện khi trang được tải là gì?Lưu trữ một WebView để duyệt ngoại tuyến

Một vài chi tiết hơn:

  • Mỗi trang sẽ được phong phú với hình ảnh, kịch bản và phong cách.

  • Mỗi trang sẽ có khoảng 0,5 đến 1 Megabyte.

  • Chúng sẽ được lưu khi ghi đè OnFinishedLoading được gọi.

  • Tốt nhất nên lưu thẻ vào thẻ SD, sau đó sử dụng repo cục bộ để mở lại.

Không chắc tôi có nên sử dụng cơ sở dữ liệu sql cho các lần xem web hay xem từng lần và ghi vào tệp hay không.

Nếu tôi làm việc sau, cách nào là cách dễ nhất để tôi không phải viết một webcrawler đầy đủ để nhận được từng tệp được liên kết?

Trả lời

7

Để sử dụng bộ đệm ẩn trên Android, bạn cần cung cấp tệp kê khai HTML5 cùng với HTML của mình.

<!DOCTYPE html> 
<html lang="en" manifest="manifest.file"> 
<head> ... 

Cơ chế lưu vào bộ nhớ cache sẽ lưu mọi thứ bạn sẽ liệt kê vào tệp kê khai vào cơ sở dữ liệu SQLite. Hãy nhớ rằng cơ sở dữ liệu là cho mỗi ứng dụng, không phải cho mỗi lần xem web. (Tôi đã có rất nhiều vấn đề với điều này).

Bài viết này giải thích tất cả các bước bạn cần thực hiện để đạt được điều này. http://web.archive.org/web/20140314001433/http://alex.tapmania.org/2010/11/html5-cache-android-webview.html

Bạn có thể làm một ví dụ hello-thế giới cho bộ nhớ đệm sử dụng trang này: http://html5demos.com/offlineapp

Bạn có thể tiết kiệm bộ nhớ cache trên thẻ SD, miễn là bạn thêm sự cho phép WRITE_EXTERNAL_STORAGE để manifest ứng dụng.

Chúc may mắn!

+1

Tôi hiểu, cảm ơn - điều này có ý nghĩa. Bây giờ không có giới hạn 10 MB với điều này? Ý tôi là, tôi cũng thấy trong nguồn này: webView.getSettings(). SetAppCacheMaxSize (1024 * 1024 * 8); Nhưng, điều đó vẫn đặt ra câu hỏi về mức độ lớn của nó? Có lẽ chỉ 10 mb mỗi trang? Nếu đó là trường hợp, sau khi nó được lưu trữ, tôi chỉ cần gọi webview bằng cách sử dụng websettings.Cacheonly phải không? –

+2

Nếu thư mục lưu trong bộ nhớ cache trên web được đặt thành thẻ SD, điều này sẽ không ảnh hưởng đến thư mục bộ nhớ cache của ứng dụng của bạn. Bạn thậm chí có thể gọi 'webview.clearCache()' để kiểm tra điều này, cơ sở dữ liệu trên thẻ SD sẽ không bị xóa. – Daniel