2010-07-08 21 views
9

Android'de bir oyun geliştirdim. Şu anda oyun istatistiklerinin çoğunu bir veritabanında kaydediyorum. Ancak, uygulama DB'de tek bir satırdan daha fazlasını kullanmaz. Şimdi yeni istatistiklerin sunulmasıyla ilgileniyorum ancak bu durum DB'imin yeniden kurulmasını ve böylece herkesin ilerlemesini bertaraf etmesine neden olacak. Gelecekte bundan kaçınmak için, oyun istatistiklerini bunun yerine SharedPreferences ile depolamayı düşünmekteyim. Benim sorum, bir sorun olmadan önce bu şekilde kaç farklı şeyin saklanabileceğidir. Toplamda yaklaşık 40 değer, tüm tam sayıları depolarım.Android SharedPreferences kısıtlamaları?

+0

40 tam sayı, SharedPreferences –

cevap

18

SharedPreferences, xml dosyalarına yazılmıştır, bu nedenle Android'deki bir dosyanın maksimum boyutu bir SharedPreferences xml dosyasının ne kadar büyük olabileceğidir. Güvenli bir şekilde 40 tam sayı değerinin problem olmayacağını söyleyebilirim.

Bir SharedPreferences dosyasındaki bir değerin maksimum boyutu, depolamaya çalıştığınız değerin maksimum boyutuyla sınırlıdır. (Anlamı, String'den daha uzun bir String değeri koyamazsınız.)

Önerebileceğim tek şey, düzenlemeleri mümkün olduğunca toplu olarak yapmaktır (yani, her değişiklik .commit() değil)) ve ayrıca her değişiklik için yeni bir editör oluşturmayın. (Bunlar yalnızca iyi uygulamalardır.)

+3

"Dizeler, Java'dan daha uzun olabilir" - Dizeler 2^31 - 1 = 2 milyar karakter içerebilir. Peki, o zaman telefonun dahili depolamasına güvenebilir. –

7

Herhangi bir sınırlamadan haberdar değilim, ancak sorunların silinmesiyle ilgili sorunlarınızla ilgili olarak sorun yok. SQLite sınıfınızdaki onUpgrade yöntemini geçersiz kılabilir ve daha sonra everyones verilerini yeni veritabanına geçirebilirsiniz.

+2

Tam Bileşenleri'nde saklamak için iyidir. Not defteri örneklerine bakın - yeni sütun eklemek için ALTER TABLE'ı kullanabilirsiniz. Ya da tamamen yeni bir tablo ekleyebilirsiniz. SharedPreferences'a geçiş yapabilirsiniz, ancak zaten bir veritabanı yaklaşımı için gittiğinizden beri, buna bağlı kalabilirsiniz. – EboMike

+0

Sanırım SharedPreferences modelini deneyeceğim ve hangisini daha çok beğendiğimi göreceğim. DB'yi etrafta tutacağım çünkü bir noktada birden fazla kayıtlı oyuna izin vermeyi planlıyorum. Alter Table ile ilgili bahşiş için teşekkürler, SharedPreferences'a geçişte bana yardımcı olacak ve herkesin kaydettiği ilerlemeyi koruyacaktır. – Tim