繁体   English   中英

SharedPreference是存储大量数据的好方法吗?

[英]Is SharedPreference a good way to store large chunks of data?

我目前在SharedPreferences中将大量用户数据存储为JSON字符串。 它运行良好,但我想知道它是否会引起任何问题,例如较大的应用程序大小或内存问题。

除了SharedPreferences之外,还有没有其他更好或推荐的方法来在Android应用程序中存储大量数据?

为什么不将其存储在SQLite DB中? 您可以采用井井有条的格式组织数据。

我认为将大数据保存在SharedPreference不是一个好习惯。 您可以将大数据存储在数据库中,也可以创建一个可读写文件。

您可以创建可读可写的文件,例如

用这种方法写文件

public static void writeToFile(String data,Context context, String fileName) {
        try {
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput(fileName+".txt", Context.MODE_PRIVATE));
            outputStreamWriter.write(data);
            outputStreamWriter.close();
        }
        catch (IOException e) {
            Log.e("Exception", "File write failed: " + e.toString());
        }
    }

用这种方法读取文件

    public static String readFromFile(Context context, String fileName) {

        String ret = "";

        try {
            InputStream inputStream = context.openFileInput(fileName + ".txt");

            if ( inputStream != null ) {
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader bufferedReader       = new BufferedReader(inputStreamReader);
                String receiveString                = "";
                StringBuilder stringBuilder         = new StringBuilder();

                while ( (receiveString = bufferedReader.readLine()) != null ) {
                    stringBuilder.append(receiveString);
                }

                inputStream.close();
                ret = stringBuilder.toString();
            }
        }
        catch (FileNotFoundException e) {
            Log.e("login activity", "File not found: " + e.toString());
        } catch (IOException e) {
            Log.e("login activity", "Can not read file: " + e.toString());
        }

        return ret;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM