2017-04-24 34 views
0

Ich speichere gerade große Teile von Benutzerdaten als JSON-Zeichenfolge in SharedPreferences. Es funktioniert gut, aber ich frage mich, ob es irgendwelche Probleme verursacht, zum Beispiel große App-Größe oder Speicherprobleme.Ist SharedPreference eine gute Möglichkeit, große Datenmengen zu speichern?

Gibt es eine bessere oder empfohlene Möglichkeit, große Datenblöcke in der Android App zu speichern, außer SharedPreferences?

+0

'SharedPreferences' wird meist verwendet, um Schlüsselwertdaten zu speichern –

+0

@NJ Was wird dann verwendet, um große Daten zu speichern? –

+1

sqlite oder Datei .. –

Antwort

0

Ich denke, es ist keine gute Praxis, große Daten in SharedPreference zu speichern. Sie können große Daten in beiden Datenbanken speichern oder eine schreib- oder lesbare Datei erstellen.

Sie lesbar & beschreibbaren Datei wie

Write-Datei mit dieser Methode erstellen

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()); 
     } 
    } 

lesen Datei mit dieser Methode

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; 
    } 
+0

Kann diese Datei von anderen Apps aufgerufen werden? –

+0

Datei beschreibbare Dateien ?? Wenn Sie über schreibbare Dateien sprechen, dann Nein, können Sie nicht von anderen Dateien zugreifen. –

+0

Wird diese Datei in der App oder im Telefonspeicher gespeichert? –

2

Warum gehst du nicht einfach speichern sie in SQLite DB? Sie können die Daten in einem Well-Format organisieren.

+0

Ist es ähnlich wie MySQL? Kannst du mich zu einem guten Tutorial für SQLite-Nutzung mit Android verweisen? –

+0

Eine einfache Google-Suche auf 'sqlite android tutorial' und Sie haben viel ... – Denny

+0

Dieses sqlite tutorial hilft mir sehr, sqlite zu verstehen. Hoffe es hilft - https://www.youtube.com/watch?v=0BUljVIgnoE –

Verwandte Themen