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

时间:2017-04-24 13:14:29

标签: android performance sharedpreferences

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

除了SharedPreferences之外,还有更好或推荐的方法在Android应用中存储大块数据吗?

2 个答案:

答案 0 :(得分:1)

为什么不将它存储在SQLite DB中?您可以以井格式组织数据。

答案 1 :(得分:0)

我认为在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;
    }