2010-07-08 36 views
9

Tôi đã phát triển một trò chơi trên Android. Tôi hiện đang lưu hầu hết số liệu thống kê trò chơi trong Cơ sở dữ liệu. Tuy nhiên, ứng dụng không sử dụng nhiều hơn một hàng trong DB. Tôi bây giờ quan tâm đến việc giới thiệu một số số liệu thống kê mới nhưng điều này sẽ làm cho DB của tôi cài đặt lại và do đó rõ ràng ra sự tiến bộ của mọi người. Để tránh điều này trong tương lai, tôi đang xem xét lưu trữ số liệu thống kê trò chơi bằng SharedPreferences thay thế. Câu hỏi của tôi là có bao nhiêu thứ khác nhau có thể được lưu trữ theo cách đó trước khi nó trở thành một vấn đề. Tổng cộng tôi sẽ lưu trữ khoảng 40 giá trị, tất cả các số nguyên.Android SharedPreferences limits?

+0

40 số nguyên là tốt để lưu trữ trong SharedPreferences –

Trả lời

18

SharedPreferences được ghi vào tệp xml, do đó kích thước tối đa của tệp trên Android là tệp Xml SharedPreferences lớn có thể như thế nào. Tôi có thể nói rằng 40 giá trị số nguyên sẽ không thành vấn đề.

Kích thước tối đa của một giá trị trong tệp SharedPreferences được giới hạn ở kích thước tối đa của giá trị bạn đang cố gắng lưu trữ. (Có nghĩa là bạn không thể đặt một giá trị String dài hơn Strings có thể bằng Java.)

Điều duy nhất tôi đề nghị là đảm bảo chỉnh sửa hàng loạt càng nhiều càng tốt (nghĩa là không .commit() mỗi thay đổi) và cũng không tạo trình chỉnh sửa mới cho từng thay đổi. (Đây chỉ là những thực hành tốt.)

SharedPreferences settings = getSharedPreferences(PREFS_FILE_NAME, 0); 
SharedPreferences.Editor editor = settings.edit(); 
editor.putInt("firstValue", mFirst); 
editor.putInt("secondValue", mSecond); 
editor.putInt("thirdValue", mThird); 

// Commit the edits! (As infrequently as possible) 
editor.commit(); 
+3

"dài hơn chuỗi có thể bằng Java" - Chuỗi có thể có 2^31 - 1 = 2 tỷ ký tự. Vâng, có thể dựa vào bộ nhớ trong của điện thoại. –

7

Tôi không biết về bất kỳ hạn chế nào nhưng liên quan đến vấn đề của bạn với mọi tiến bộ đang bị xóa sổ. Bạn có thể ghi đè lên phương thức onUpgrade trong lớp SQLite của bạn và sau đó di chuyển mọi dữ liệu vào cơ sở dữ liệu mới hơn.

+2

Chính xác. Xem ví dụ notepad - bạn có thể sử dụng ALTER TABLE để thêm các cột mới. Hoặc bạn có thể thêm một bảng hoàn toàn mới. Bạn có thể chuyển sang SharedPreferences, nhưng kể từ khi bạn đã đi cho một phương pháp tiếp cận cơ sở dữ liệu, bạn cũng có thể gắn bó với nó. – EboMike

+0

Tôi nghĩ rằng tôi sẽ thử mô hình SharedPreferences và xem cái nào tôi thích hơn. Tôi sẽ giữ cho DB xung quanh mặc dù bởi vì tại một số điểm tôi có kế hoạch cho phép cho nhiều trò chơi đã lưu. Cảm ơn lời khuyên về Alter Table, nó sẽ giúp tôi chuyển sang SharedPreferences và giữ cho tiến trình của mọi người được lưu. – Tim

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