2010-07-08 2 views
9

Android에서 게임을 개발했습니다. 현재 대부분의 게임 통계를 데이터베이스에 저장하고 있습니다. 그러나 응용 프로그램은 DB에서 하나 이상의 행을 활용하지 않습니다. 지금은 몇 가지 새로운 통계를 소개하는 데 관심이 있지만 내 DB를 다시 설치하여 모든 사람의 진행 상황을 제거합니다. 이것을 피하기 위해 앞으로 SharedPreferences를 사용하여 게임 통계를 저장하는 것을 고려 중입니다. 내 질문은 얼마나 많은 다른 것들이 문제가되기 전에 그런 식으로 저장할 수 있습니다. 총 40 개의 값과 모든 정수를 저장할 것입니다.Android SharedPreferences의 제한 사항이 있습니까?

+0

(40) 정수가 된 SharedPreferences –

답변

18

SharedPreferences는 xml 파일에 기록되므로 안드로이드에서 파일의 최대 크기는 SharedPreferences xml 파일의 크기입니다. 나는 40 개의 정수 값이 문제가되지 않는다고 안전하게 말할 수있다.

SharedPreferences 파일의 최대 값은 저장하려는 값의 최대 크기로 제한됩니다. (의미는 문자열 값이 Java보다 더 길 수 없다는 의미입니다.)

내가 제안하는 유일한 것은 편집을 가능한 한 많이 배치하는 것입니다 (의미는 각각 .commit()을 의미하지 않음).) 또한 각 변경에 대해 새 편집기를 만들지 마십시오. (이건 그냥 좋은 사례입니다.)

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

"문자열이 Java보다 길 수 있습니다"- 문자열의 길이는 2^31-1 = 20 억 자입니다. 글쎄, 그 때 전화의 내부 스토리지에 의존 수 있습니다. –

7

모든 제한 사항을 알고 있지만 모든 사람의 진행 상황이 완전히 사라지는 문제는 없습니다. SQLite 클래스의 onUpgrade 메서드를 재정 의하여 모든 사용자 데이터를 새로운 데이터베이스로 마이그레이션 할 수 있습니다.

+2

정확히에 저장 정상입니다. 메모장 예제를 참조하십시오. ALTER TABLE을 사용하여 새 열을 추가 할 수 있습니다. 또는 완전히 새로운 표를 추가 할 수 있습니다. SharedPreferences로 전환 할 수는 있지만 이미 데이터베이스 접근 방식을 사용 했으므로이를 준수 할 수도 있습니다. – EboMike

+0

SharedPreferences 모델을 시험해보고 더 좋아하는 모델을 보려고합니다. DB를 계속 유지할 것입니다. 어느 시점에서 여러 저장된 게임을 허용 할 계획이기 때문입니다. Alter Table에 대한 팁을 보내 주셔서 감사합니다. SharedPreferences로 마이그레이션하고 모든 사람의 진행 상황을 저장하는 데 도움이 될 것입니다. – Tim

관련 문제