AndroidのStrictModeによって次の違反が報告されています。
02-05 04:07:41.190: ERROR/StrictMode(15093): 添付のスタック トレースでリソースが取得されましたが、解放されませんでした。リソース リークを回避する方法については、java.io.Closeable を参照してください。02-05 04:07:41.190: エラー/StrictMode(15093): java.lang.Throwable: 明示的な終了メソッド 'close' が呼び出されていません
ストリームを適切に閉じていないことに不満を抱いています。ただし、in
下層のストリームを閉じてはいけませんか? フラグが立てられたエラーの理由は何ですか?
private ArrayList<Uri> loadPath() {
ArrayList<Uri> uris = new ArrayList<Uri>();
if (mFile.exists()) {
ObjectInputStream in = null;
try {
in = new ObjectInputStream(new BufferedInputStream(
new FileInputStream(mFile), STREAM_BUFFER_SIZE));
ArrayList<String> strings = new ArrayList<String>();
strings.addAll((ArrayList<String>) in.readObject());
for (String string : strings) {
uris.add(Uri.parse(string));
}
} catch (Exception e) {
mFile.delete();
} finally {
IOUtils.closeQuietly(in);
}
}
return uris;
}
public static void closeQuietly(InputStream input) {
try {
if (input != null) {
input.close();
}
} catch (IOException ioe) {
// ignore
}
}