是否有规则可以将多少数据保存为Android中共享首选项中的值。是否可以保存例如1 GB大的字符串?我知道使用文件会更好,但当时我不需要一个"清洁"实施
答案 0 :(得分:1)
将文件作为文件存储在app目录中,
如果应用程序是卸载程序,您将免于清理过程,所有文件也在其程序包目录中。
要使用Appdirectory
/**
* Takes the context and gets the current app directory path
*
* @param context
* @return
*/
private static String getAppDirectory(Context context)
{
String appDirectory=null;
try {
appDirectory=context.getPackageManager().getPackageInfo(context.getPackageName(), 0).applicationInfo.dataDir;
} catch (NameNotFoundException e)
{
ATZLog.e(TAG, "error while retriving app directory in getAppDirectory");
e.printStackTrace();
}
return appDirectory;
}
将文件存储在目录结构中
\com.yourpackage\bigfiles\1GbFile.ext
没有其他人可以看到或使用它。
还有一件事没有实践,请阅读here关于在app目录中存储大量数据 如果你有1 GB的字符串数据,你的设计也可能有些奇怪
答案 1 :(得分:1)
我不知道SharedPref有任何实际限制,只是一些指示。
java String的最大大小是
2^31-1 =about 2 billion characters or roughly 1.86GB
因此,就数据类型本身而言,存储存在限制。
更不用说Android似乎加载了一次SharedPreferences而后续的加载缓存,所以在性能方面你会花费大量时间,因为这肯定会引发异常。
It seems a disaster in the making.
答案 2 :(得分:0)
我没见过硬限制。我使用gson一直存储SharedPreferences中的复杂对象而没有问题。请确保您不占用所有设备存储空间。