I developed a game on Android. I am currently saving most of the game stats in a Database. However the app does not utilize more than a single row in the DB. I am now interested in introducing some new stats but this will cause my DB to re-install and thus clear out everyone's progress. In order to avoid this in the future I am considering storing the game stats with SharedPreferences instead. My question is how many different things can be stored that way before it becomes a problem. In total I would be storing around 40 values, all integers.
I dont know about any limitations but regarding your problem with everyones progress being wiped out. You can override the onUpgrade method in your SQLite class and then migrate everyones data over to the newer database.
SharedPreferences are written to xml files, so the maximum size of a file on Android is how large a SharedPreferences xml file can be. I can safely say that 40 integer values will not be a problem.
The maximum size of a value in a SharedPreferences file is limited to the maximum size of the value you are attempting to store. (Meaning you can't put a String value that is longer than Strings can be in Java.)
The only thing I would suggest is making sure to batch the edits as much as possible (meaning don't .commit()
each change) and also don't create a new editor for each change. (These are just good practices.)
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();