2012-01-19 21 views
5

Tôi có máy chủ lưu trữ dữ liệu cho ứng dụng tôi đang tạo trên máy tính bảng Android. Dữ liệu thay đổi khá thường xuyên, nhưng tôi nhận ra rằng máy tính bảng và điện thoại không phải lúc nào cũng được kết nối với dữ liệu, nhất thiết và sẽ tốt cho người dùng đã có quyền truy cập vào dữ liệu mà họ đã xem trước đó.Dữ liệu người dùng hiện có từ các dịch vụ trực tuyến cho "xem ngoại tuyến" trên các ứng dụng Android

Tôi muốn ứng dụng lấy dữ liệu từ máy chủ web bất cứ khi nào có thể và khi không thể, để kéo từ máy chủ SQLite (hoặc bất kỳ phương thức thích hợp nào) trên điện thoại.

Có triển khai hoặc thực tiễn đã được đặt để thực hiện việc này không? Nếu vậy, phương pháp hiện tại để thực hiện một tính năng như thế nào? Và liệu phương pháp này có thể được áp dụng để thực hiện thay đổi dữ liệu và sau đó đẩy những thay đổi đó bất cứ khi nào kết nối dữ liệu trở lại?

Trả lời

2

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ủ.

4

Không chắc chắn nếu điều này có ích nhưng tôi có yêu cầu tương tự và tìm thấy một ứng dụng Android có tên là cơ sở dữ liệu lưu trữ mà về cơ bản có nút đồng bộ để sử dụng điện thoại để lưu trữ dữ liệu và sau đó đồng bộ hóa với bảng tính của Google, bạn cũng có thể cập nhật bảng tính và khi người dùng nhấp vào đồng bộ hóa trên Android, nó sẽ cập nhật cơ sở dữ liệu cục bộ của họ. Cho dù điều này sẽ làm việc cho một môi trường đa người dùng tôi không chắc chắn nhưng bạn có thể có thể mổ xẻ các ứng dụng hoặc sử dụng một phương pháp tương tự?

liên quan

(ps Tôi không có cách nào liên kết với các ứng dụng tôi đã đề cập)

+0

Ứ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

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