2017-08-20 4 views
0

In meiner App geht der Benutzer zu verschiedenen Aktivitäten, um Upgrades zu kaufen, und ich möchte, dass sie, wenn sie die App für diese Aktivität schließen, ihre Daten speichern.OutputStreamWriter speichert keine Daten bei gestoppter Aktivität

Das ist meine Art und Weise, dass die Informationen des Sparens:

public void onStop(){ 
    super.onStop(); 
    writeCounttofile(); 
    writeSingletofile(); 
    writeAddtofile(); 
} 

public void writeCounttofile() { 
    try { 
     OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("countvalue.txt", Context.MODE_PRIVATE)); 
     outputStreamWriter.write(String.valueOf(countervalue)); 
     outputStreamWriter.close(); 
    } catch (IOException e) { 
     Log.v("MyActivity", e.toString()); 
    } 
} 


private int readCountFromFile() { 

    String result = ""; 
    int countervalue = 0; 
    try { 

     InputStream inputStream = openFileInput("countvalue.txt"); 

     if (inputStream != null) { 

      InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
      BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 

      String tempString = ""; 
      StringBuilder stringBuilder = new StringBuilder(); 

      while ((tempString = bufferedReader.readLine()) != null) { 

       stringBuilder.append(tempString); 

      } 

      inputStream.close(); 

      result = stringBuilder.toString(); 
      countervalue = Integer.parseInt(result); 

     } 


    } catch (FileNotFoundException e) { 
     Log.v("MyActivity", "File not found" + e.toString()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (NumberFormatException e) { 
     //here you catch and watch the problem 
     Log.e("MyActivity", "cant parse string: " + result); 
    } 
    return countervalue; 
} 

public void writeAddtofile() { 
    try { 
     OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("addvalue.txt", Context.MODE_PRIVATE)); 
     outputStreamWriter.write(String.valueOf(Add)); 
     outputStreamWriter.close(); 
    } catch (IOException e) { 
     Log.v("MyActivity", e.toString()); 
    } 
} 


private int readAddFromFile() { 

    String result = ""; 
    int add = 0; 
    try { 

     InputStream inputStream = openFileInput("addvalue.txt"); 

     if (inputStream != null) { 

      InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
      BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 

      String tempString = ""; 
      StringBuilder stringBuilder = new StringBuilder(); 

      while ((tempString = bufferedReader.readLine()) != null) { 

       stringBuilder.append(tempString); 

      } 

      inputStream.close(); 

      result = stringBuilder.toString(); 
      add = Integer.parseInt(result); 

     } 


    } catch (FileNotFoundException e) { 
     Log.v("MyActivity", "File not found" + e.toString()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (NumberFormatException e) { 
     //here you catch and watch the problem 
     Log.e("MyActivity", "cant parse string: " + result); 
    } 
    return add; 
} 

public void writeSingletofile() { 
    try { 
     OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("single.txt", Context.MODE_PRIVATE)); 
     outputStreamWriter.write(String.valueOf(Singleadd)); 
     outputStreamWriter.close(); 
    } catch (IOException e) { 
     Log.v("MyActivity", e.toString()); 
    } 
} 


private int readSingleFromFile() { 

    String result = ""; 
    int single = 1; 
    try { 

     InputStream inputStream = openFileInput("single.txt"); 

     if (inputStream != null) { 

      InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
      BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 

      String tempString = ""; 
      StringBuilder stringBuilder = new StringBuilder(); 

      while ((tempString = bufferedReader.readLine()) != null) { 

       stringBuilder.append(tempString); 

      } 

      inputStream.close(); 

      result = stringBuilder.toString(); 
      single = Integer.parseInt(result); 

     } 


    } catch (FileNotFoundException e) { 
     Log.v("MyActivity", "File not found" + e.toString()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (NumberFormatException e) { 
     //here you catch and watch the problem 
     Log.e("MyActivity", "cant parse string: " + result); 
    } 
    return single; 
} 

Und wenn sie an die App auf die Haupttätigkeit kehre ich alle Lesemethoden und die Werte der App diese Upgrades gleich genannt, aber für Irgendein Grund, es funktioniert nicht. Wenn ich die App von der Hauptaktivität schließe, speichert sie alle Informationen in Ordnung, weshalb ich die Methoden aus der Hauptaktivität einfach in meine anderen Aktivitäten kopiert habe. Ist das falsch?

Bitte und danke.

+1

Es ist immer eine gute Idee, diese Methoden aus der onPause Methode rufen Sie Ihren Ausgangsstrom zu spülen, nachdem etwas in sie zu schreiben. https://stackoverflow.com/questions/2340106/what-is-the-purpose-of-flush-in-java-streams – wax911

Antwort

0

Nach meiner Erfahrung Sie die OnStop Methode erlaubt es nicht, einige Operationen auszuführen, so zu lösen sie

Verwandte Themen