Không thực sự là một khung chung cho điều này nói chung như xa như tôi biết. Có khá một vài bài viết ở đây mà đối phó với bộ nhớ đệm hình ảnh mà có thể dễ dàng thích ứng nhưng không có gì mà tôi biết hoàn toàn khái quát hoặc chuyên ngành để xem offline. Điều đó nói rằng, hầu hết các giải pháp chỉ hoạt động với các URL và tệp, do đó, nó có thể hoạt động khá dễ dàng nếu dữ liệu của bạn rất đơn giản. Nó phụ thuộc rất nhiều vào dữ liệu của bạn là gì và bạn dự định hiển thị nó như thế nào. Nếu nó bao gồm các trang web sẽ được hiển thị trong một WebView, sau đó nó có thể nhận được gây phiền nhiễu bởi vì sau đó bạn phải đi qua các liên kết (bao gồm cả hình ảnh, css, javascript, vv) và bộ nhớ cache những người. Tuy nhiên, nếu bạn đang làm việc với các URL riêng biệt hoặc dữ liệu có cấu trúc cụ thể mà từ đó bạn có thể phân tích cú pháp tất cả các URL có liên quan một cách dễ dàng, thì việc này dễ dàng hơn nhiều.
Dưới đây là một giải pháp hình ảnh theo định hướng như vậy: https://github.com/ZaBlanc/WebImageView
Cách tiếp cận chung là khá đơn giản. Nó có thể là một cái gì đó như thế này:
- Bất cứ lúc nào bạn cố gắng để "có được" một URL, bạn luôn đọc nó từ bộ nhớ cache của bạn
- Nếu bộ nhớ cache của bạn có nó thì bạn có thể sử dụng nó hạnh phúc và được trên con đường của bạn
- Nếu bộ nhớ cache không có, thì bạn phải xếp hàng yêu cầu tải xuống không đồng bộ tệp
- Sau khi tải xuống tệp xong, hãy gửi một số loại thông báo để yêu cầu ứng dụng xử lý.
Bạn cũng phải xử lý các nội dung như chính sách hết hạn bộ nhớ cache và cách hiển thị dữ liệu, nhưng có thể là khởi đầu.
Nếu bạn đang nghĩ đến việc đồng bộ hóa hai chiều, thì sẽ khó khăn hơn nhiều. Bạn phải suy nghĩ về ổ khóa và xung đột (có thể hai người cập nhật cùng một mục cùng một lúc? Nếu có, thì điều gì xảy ra?), Atomicity (bạn có các mục liên quan chỉ có ý nghĩa nếu cả hai được cập nhật/thêm?), xác thực dữ liệu (nếu người dùng gửi dữ liệu xấu) và nhiều hơn thế nữa. Đó có lẽ là lý do tại sao không ai đến với bất cứ điều gì (mà tôi biết) khá được nêu ra. Nó sẽ khá hữu ích, nhưng nó có thể trở nên khá phức tạp và thực sự liên quan đến cả máy khách và máy chủ.
Ứng dụng cơ sở dữ liệu vật lưu niệm không xuất hiện để có mã nguồn mở, vì vậy có khả năng 'mổ xẻ' có vẻ như khó xảy ra. – GenericJon