Tôi đã cố gắng hết sức để làm cho tất cả dữ liệu cho trò chơi Android của tôi phù hợp với gói savedInstanceState. Có rất nhiều dữ liệu hoàn toàn, bao gồm nhiều đối tượng Parcelable. Điều này đảm bảo rằng khi ứng dụng bị tạm dừng hoặc thay đổi hướng, sẽ không có dữ liệu nào bị mất bởi Hoạt động đang được tạo lại.Lưu gói vào SharedPreferences
Tuy nhiên, gần đây tôi đã phát hiện ra rằng một gói savedInstanceState dường như KHÔNG thích hợp để lưu trữ lâu dài. Vì vậy, tôi đang tìm cách để tôi có thể điều chỉnh phương pháp lưu hiện có của mình để hoạt động như một giải pháp lâu dài, để trạng thái trò chơi luôn có thể được khôi phục.
Tôi đã nghe nói về 2 giải pháp cho đến nay:
1) Sử dụng các bó savedInstanceState cho thay đổi định hướng, mà còn kết hợp SharedPrefs cho khi ứng dụng cần phải được tắt hoàn toàn.
Điều này dường như vô cùng hiệu quả, vì nó sử dụng 2 phương pháp hoàn toàn khác nhau để làm cơ bản giống nhau. Ngoài ra, vì gói savedInstanceState của tôi sử dụng các đối tượng Parcelable, tôi sẽ phải cung cấp cho từng đối tượng một phương thức khác để cho phép chúng được ghi vào SharedPrefs. Về cơ bản LOTS mã trùng lặp và khó quản lý.
2) Tuần tự hóa gói savedInstanceState và ghi trực tiếp vào tệp.
Tôi mở cửa cho điều này, nhưng tôi thực sự không biết cách thực hiện. Tuy nhiên, tôi vẫn giữ hy vọng rằng có thể có một giải pháp tốt hơn, như tôi đã nghe nói rằng serialization trong Android là "comically/unusably slow".
Tôi sẽ rất biết ơn nếu ai đó có thể cung cấp cho tôi giải pháp cho điều này.
Để tuần tự chỉ tìm kiếm một lớp tuần tự hóa, nó không phải là rất khó tìm. Tôi đã không nhận thấy bất kỳ sự chậm trễ excruciating trong khi sử dụng nó – mango
Các thông tin duy nhất tôi có thể tìm thấy cho tôi biết tôi cần phải thực hiện Serializable - nhưng Bundle không thực hiện giao diện này. – Dan
Tôi khuyên bạn nên sử dụng thư viện https://github.com/iamironz/binaryprefs, Nó cho phép lưu dữ liệu như java chuẩn thông qua triển khai Giao diện bền vững (Giao diện bên ngoài trong jdk) –