2017-08-20 2 views
0

私のアプリでは、ユーザーはアップグレードを購入するためにさまざまなアクティビティに行きます。そのアクティビティでアプリケーションを閉じると、そのアイテムが保存されるようにします。OutputStreamWriterはアクティビティが停止したときにデータを保存しません

これは、その情報を保存する私の方法です:

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

そして、彼らが主な活動でアプリに戻ったとき、私はすべてのreadメソッドと呼ばれ、アプリの値は、これらのアップグレードを等しくしているが、用何らかの理由で動作しません。主なアクティビティからアプリを閉じると、すべての情報がうまく保存されるため、主なアクティビティから他のアクティビティにメソッドをコピーしたばかりです。これは間違っていますか?

お願いしていただきありがとうございます。私の経験で

+1

からこれらのメソッドを呼び出す解決するために、あなたには、いくつかの操作を実行することはできません。 https://stackoverflow.com/questions/2340106/what-is-the-purpose-of-flush-in-java-streams – wax911

答えて

0

あなたはonStopメソッドは、それはそれはそれに何かを書き込んだ後、あなたの出力ストリームをフラッシュするために、常に良い考えですonPauseメソッド

関連する問題