2012-08-10 44 views
6

Giả sử một phương pháp của tôi đã được thông qua một Bundle đã lấp đầy với dữ liệu được lưu lại, là có một cách để lưu nó vào SharedPreferencesmà không cần dùng nó ngoài để ints, phao, Strings, vv ?Tiết kiệm toàn bộ Bundle để SharedPreferences

Tôi thích sự tiện lợi của việc viết/cam kết tất cả trong "một ngã swoop", vì vậy nếu điều này là không thể sử dụng SharedPreferences, cách tiếp cận bộ nhớ khác persistent nào bạn sẽ giới thiệu?

Trả lời

5

như xa như tôi biết, bạn có thể lưu dữ liệu chỉ nguyên thủy (và giấy gói của họ) để SharedPreferences

tại sao bạn không tạo ra phương pháp helper của riêng bạn mà sẽ lặp qua Bundle và lưu tất cả các giá trị từ nó để SharedPreferences ?

+2

SharedPreferences có nghĩa là để lưu trữ các loại đơn giản, nhưng tôi cho rằng bạn có thể serialize Bundle của bạn thành một mảng byte và bỏ nó vào một chuỗi. Người ta có thể lập luận rằng bạn chỉ đang thay thế nỗ lực duy trì SharedPreferences của mình thành nỗ lực duy trì Gói. – Sparky

+0

Cách tiếp cận của tôi là thích các phương pháp và kỹ thuật đã tồn tại trong khuôn khổ thay vì "tái phát minh ra bánh xe". Câu hỏi của tôi là nhằm tìm ra liệu phương pháp trợ giúp như vậy đã tồn tại trong SDK Android hay tôi thực sự nên tạo của riêng mình. Tôi nghĩ bạn đã trả lời câu hỏi của tôi. +1. – ateiob

+0

@Sparky * "Người ta có thể cho rằng bạn chỉ ** thay thế nỗ lực ** của việc duy trì SharedPreferences của bạn thành nỗ lực duy trì một Bundle." * - Tôi rất xác định điều này nhưng kiểm tra khả năng sử dụng 'Bundle.writeToParcel() ', sau đó tuần tự hóa nó thành một' Chuỗi', trông có vẻ chung chung và hiệu quả hơn việc phải cập nhật phương thức trợ giúp mỗi khi một biến trạng thái mới được thêm vào. – ateiob

13

SharedPreferences được tuần tự hóa thành XML, đó là lý do tại sao bạn chỉ có thể sử dụng các loại đơn giản. Bạn sẽ phải thực hiện chuyển đổi gói của riêng bạn thành các thuộc tính SharePreferences riêng lẻ hoặc tuần tự hóa gói này theo cách khác.

Dưới đây là một tài liệu tham khảo tốt thảo luận về các khả năng khác nhau của lưu trữ dữ liệu trong Android: http://developer.android.com/guide/topics/data/data-storage.html

+5

+1 để giải thích lý do * tại sao * SharedPreferences chỉ hỗ trợ các loại đơn giản. – ateiob

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