私の Android アプリでは、新しいゲームが読み込まれるたびに内部ストレージからファイルを読み取っています。これを最初の 4 回実行すると正常に動作しますが、5 回目に強制終了します。これが私のコードです
private String readFromInternalStorage(String filename) {
FileInputStream fis=null;
byte[] bytes = new byte[1000000];
try {
fis=startGame.openFileInput(filename);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
fis.read(bytes);
} catch (IOException e) {
e.printStackTrace();
}
return new String(bytes);
}
コードをいじっていると、バイト配列の長さを変更すると、強制的に閉じることなくファイルを読み取ることができる回数が変わることに気付きました。長さを 2000000 に変更すると 2 回目で閉じ、100000 に変更すると 8 回目で閉じます。メソッドが呼び出されるたびに新しいバイト配列を作成しているため、サイズが何も変わらないとは思わないため、なぜこれが起こるのかについてはまったくわかりません。
アップデート:
戻ってさらにテストを行った後、ファイル入力は、アプリが強制的に閉じられる理由とは何の関係もないようです。このコードがコメントアウトされていると、アプリは強制終了せずに 5 つのレベルを続けてロードするので、それが問題だと思いましたが、8 回試行しても強制終了するので、他に何か問題があることは明らかです。とにかく助けてくれてありがとう。