2012-01-17 6 views
10

Tôi cần lưu trữ một nội dung đối tượng trong Sqlite. Tôi đã tự hỏi đó là cách tốt nhất để làm điều đó với một serialization của đối tượng hoặc với Parcelable.Android Lưu trữ một đối tượng Parcelable trong SQLite

Có thể lưu trữ dưới dạng bưu kiện không? Tôi làm nó như thế nào?

+0

bạn thực sự cần giữ dữ liệu trong sqlite sẽ không tốt hơn để giữ trong một thư mục? – ademar111190

Trả lời

32

Bạn được phép chuyển đổi đối tượng của mình thành một số cấu trúc dữ liệu bền vững (XML, JSON, Serializable) và đặt nó vào cột cơ sở dữ liệu nào đó. Lưu ý rằng bạn sẽ vẫn cần phải giải quyết các vấn đề tương thích (ví dụ: Phiên bản 2 của ứng dụng của bạn thay đổi một lớp, bây giờ cần phải xử lý cả cấu trúc Phiên bản 1 và Phiên bản 2). Cũng xin lưu ý rằng, đi tuyến đường này, bạn sẽ mất rất nhiều khả năng cơ sở dữ liệu (ví dụ: truy vấn một thứ gì đó trong đối tượng).

Bạn cũng được hoan nghênh thử nghiệm với cơ sở dữ liệu đối tượng hoặc CouchDb hoặc lưu trữ cấu trúc dữ liệu bền vững của bạn vào tệp, nếu SQLite không phải là yêu cầu.

Điều chắc chắn nhất sẽ không hoạt động đáng tin cậy là đổ Parcelable vào Parcel và thử lưu trữ Parcel. A Parcel chỉ dành cho IPC và không được thiết kế để duy trì. Đây là một trong những lý do tại sao Parcelable nhanh hơn Serializable.

+0

Giống như luôn luôn, câu trả lời hoàn hảo :) Dù sao tôi không biết bao nhiêu Serializable có khả năng mở rộng cho khả năng tương thích ngược. Tôi nghĩ rằng tôi sẽ cố gắng lưu trữ dữ liệu trong JSON với một số loại nén :) – StErMi

+1

@StErMi: Vâng, nếu tôi đi xuống con đường này, cá nhân tôi sẽ sử dụng JSON, hoặc có lẽ XML, trừ khi một số dữ liệu không thể được chuyển thành văn bản. Đó là tấn gỡ lỗi dễ dàng hơn khi bạn thực sự có thể đọc dữ liệu, thay vì nó là một blob khó hiểu. – CommonsWare

+0

bạn hoàn toàn đúng :) Tôi sẽ thử :) – StErMi

3

Nếu bạn cần lưu dữ liệu, hãy sử dụng Serializable. Parcelable có nghĩa là để sử dụng IPC. Nó là một định dạng nhị phân và không được khuyến khích cho sự kiên trì.