Tôi đã nghiên cứu các phương pháp thay thế để lưu dữ liệu của trò chơi giữa các lượt chơi và tự hỏi liệu có ai có thể chỉ cho tôi đúng hướng không.Phương pháp tốt nhất để lưu dữ liệu - sở thích, sqlite, serializable hoặc khác?
Tôi có khoảng 32 nghìn dữ liệu phải được lưu trong khi bật. Tôi loại trừ các tùy chọn do số lượng dữ liệu tuyệt đối. Tôi đã dành một vài ngày chơi xung quanh với SQLite nhưng không thể có được các dữ liệu để tiết kiệm trong vòng chưa đầy hai giây (mặc dù thời gian chắc chắn đã không bị lãng phí).
Tôi đã quyết định rằng tôi sẽ sử dụng cơ sở dữ liệu để tải dữ liệu không đổi ở đầu trò chơi. Điều này chắc chắn sẽ làm cho nó dễ dàng hơn để tinh chỉnh các thông số khác nhau và các giá trị mặc định trong trò chơi. Nhưng điều này vẫn khiến tôi tìm phương pháp lý tưởng để ghi dữ liệu.
Dữ liệu cần được lưu về cơ bản là 9 lần xuất hiện lớp A và 9 lần xuất hiện của lớp B. Tôi là một tháng chuyên sâu trong đường cong học tập của Android (và sắc thái của Java, đến từ nền C++) và đã googling như điên. Điều này mang lại hai khả năng để nhớ -
1) serialization (ObjectOutputStream)
Tôi nghĩ đây sẽ là giải pháp hoàn hảo nhưng, sau khi đọc một vài bài viết khác liên quan đến chủ đề này, thu thập rằng nó không phải là rất khuyến khích trên Nền tảng Android do tốc độ và phân bổ bộ nhớ kích thích bộ thu gom rác thành một cơn thịnh nộ tiềm ẩn.
2) DataOutputStream lớp
suy nghĩ hiện tại của tôi là thêm Lưu chức năng Load và cho cả lớp và sử dụng DataOutputStream và DataInputStream gọi trong họ viết và đọc dữ liệu tương ứng.
Dữ liệu trong các lớp là nguyên thủy (chuỗi và ints chủ yếu) và mảng nguyên thủy, vì vậy không có gì quá phức tạp trong đó để phá vỡ. Liệu giải pháp thứ hai này có vẻ là một giải pháp tốt, khả thi không? Hay có những giải pháp khác mà tôi chưa biết?
Cân nhắc chính cần tính đến là việc ghi vào flash có thể là hoạt động lâu dài, bất chấp kích thước của dữ liệu. Ngay cả việc viết 1 byte cũng có thể mất một lượng thời gian đáng chú ý. Vì vậy, hãy chắc chắn rằng giải pháp của bạn đệm lên tất cả các dữ liệu và viết nó trong vài hoạt động càng tốt. – Jems
Cảm ơn lời khuyên. Tôi đã đi với các phương pháp DataOutputStream và thời gian thực hiện để ghi dữ liệu bây giờ là không đáng kể (khoảng 0,1 giây). Tôi rất vui vì tôi đã bị sidetracked với cơ sở dữ liệu SQLite mặc dù, họ chắc chắn sẽ rất hữu ích :) – Rok