Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android共享引用限制?_Android_Database_Storage_Sharedpreferences - Fatal编程技术网

Android共享引用限制?

Android共享引用限制?,android,database,storage,sharedpreferences,Android,Database,Storage,Sharedpreferences,我在Android上开发了一个游戏。我目前正在将大部分游戏数据保存在数据库中。但是,应用程序在数据库中使用的行不超过一行。我现在有兴趣介绍一些新的统计数据,但这将导致我的数据库重新安装,从而清除了每个人的进展。为了避免将来出现这种情况,我正在考虑使用SharedReferences存储游戏统计数据。我的问题是,在它成为问题之前,有多少不同的东西可以以这种方式存储。总的来说,我将存储大约40个值,所有整数。我不知道有什么限制,但是关于你的问题,每个人的进步都被抹掉了。您可以重写SQLite类中的o

我在Android上开发了一个游戏。我目前正在将大部分游戏数据保存在数据库中。但是,应用程序在数据库中使用的行不超过一行。我现在有兴趣介绍一些新的统计数据,但这将导致我的数据库重新安装,从而清除了每个人的进展。为了避免将来出现这种情况,我正在考虑使用SharedReferences存储游戏统计数据。我的问题是,在它成为问题之前,有多少不同的东西可以以这种方式存储。总的来说,我将存储大约40个值,所有整数。

我不知道有什么限制,但是关于你的问题,每个人的进步都被抹掉了。您可以重写SQLite类中的onUpgrade方法,然后将每个人的数据迁移到较新的数据库。

SharedReferences会写入xml文件,因此Android上文件的最大大小是SharedReferences xml文件的大小。我可以放心地说,40个整数值不会是问题


SharedReferences文件中值的最大大小限制为您试图存储的值的最大大小。(这意味着您不能输入比Java中字符串长度更长的字符串值。)

我唯一的建议是确保尽可能多地批量编辑(即不要
.commit()
每次更改),也不要为每次更改创建新的编辑器。(这些只是好的做法。)


正如在其他答案中提到的,共享偏好实际上只受到手机存储空间和简单性的限制


.

不要对游戏数据使用共享首选项。我可以下载你的游戏,用下面的工具把它砍成碎片。如果你的钱存放在那里,我就把它换成420万黄金,算是好的

是什么阻止某人使用共享首选项编辑器编辑其XML文件


我不敢相信在回答你的问题时没有人想到这一点。在电子游戏环境中,您的局限性非常明显。没有什么能阻止任何人编辑他们所有的共享偏好数据,从而从你的游戏中破解bleep。

没错。参见记事本示例-您可以使用ALTERTABLE添加新列。或者您可以添加一个全新的表。您可以切换到SharedReferences,但既然您已经选择了数据库方法,那么您最好还是坚持使用它。我想我将尝试SharedReferences模型,看看我更喜欢哪一种。不过我会保留DB,因为我计划在某个时候允许多个已保存的游戏。感谢关于Alter Table的提示,它将帮助我迁移到SharedReferences并保存每个人的进度。“比Java中的字符串更长”-字符串可以有2^31-1=20亿个字符。那么,这可能取决于手机的内部存储。40整数可以存储在SharedReferences中
SharedPreferences settings = getSharedPreferences(PREFS_FILE_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("firstValue", mFirst);
editor.putInt("secondValue", mSecond);
editor.putInt("thirdValue", mThird);

// Commiting the edits
editor.commit();