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メソッドと呼ばれ、アプリの値は、これらのアップグレードを等しくしているが、用何らかの理由で動作しません。主なアクティビティからアプリを閉じると、すべての情報がうまく保存されるため、主なアクティビティから他のアクティビティにメソッドをコピーしたばかりです。これは間違っていますか?
お願いしていただきありがとうございます。私の経験で
からこれらのメソッドを呼び出す解決するために、あなたには、いくつかの操作を実行することはできません。 https://stackoverflow.com/questions/2340106/what-is-the-purpose-of-flush-in-java-streams – wax911