以下の Scanner コードを 1 回実行すると、問題なく実行されます。
もう一度実行すると、アプリがクラッシュし、LogCat で「メモリ不足」エラーが発生します。
アプリが 2 回目の実行でクラッシュしないように、最初の実行で使用されたメモリを解放するにはどうすればよいですか?
どんな提案でも大歓迎です
try
{
myString = new Scanner(new File(myFilePath)).useDelimiter("\\A").next();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
追加雑用。info:
コードの目的は、大きな (1.5MB) テキスト ファイルの内容全体を文字列に読み込むことです。
LogCat の正確なエラー メッセージは次のとおりです。4194320 バイト
の割り当てでメモリが不足しています コードは AsyncTask バックグラウンド スレッドで実行されています。
try/catch は、Eclipse によって自動的に追加されました。フォーマットが適切かどうかはわかりません。2 回目の実行の前にメモリを解放するためにmyString
を
空にしようとしましたが、それは役に立ちませんでした。
他の方法を使用してファイルを文字列にロードしようとしましたが (推奨されることが多い apache Utils メソッドを含む)、この方法に落ち着きました。