共享首选项:长字符串

时间:2014-08-22 18:25:44

标签: android preferences shared

是否有规则可以将多少数据保存为Android中共享首选项中的值。是否可以保存例如1 GB大的字符串?我知道使用文件会更好,但当时我不需要一个"清洁"实施

3 个答案:

答案 0 :(得分:1)

将文件作为文件存储在app目录中,

  1. 最好不要在首选项中存储此类数据
  2. 如果应用程序是卸载程序,您将免于清理过程,所有文件也在其程序包目录中。

    要使用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;
    }
    
  3. 将文件存储在目录结构中

    \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中的复杂对象而没有问题。请确保您不占用所有设备存储空间。