Tôi nhận được vi phạm sau đây được báo cáo bởi StrictMode trong Android.StrictMode phàn nàn về InputStream không bị đóng
02-05 04: 07: 41.190: ERROR/StrictMode (15093): Tài nguyên đã được mua tại dấu vết ngăn xếp được đính kèm nhưng không bao giờ được giải phóng. Xem java.io.Closeable để biết thông tin tránh rò rỉ tài nguyên. 02-ngày 05 tháng 4: 07: 41,190: LỖI/StrictMode (15.093): java.lang.Throwable: chấm dứt Explicit phương pháp 'gần' không được gọi
Nó được cribbing về việc không đóng cửa suối đúng cách. Tuy nhiên, không nên đóng in
đóng các luồng cơ bản? Điều gì có thể là lý do cho lỗi được gắn cờ?
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
}
}
Không chắc chắn trình kiểm tra StrictMode thông minh như thế nào, nhưng có vẻ như nó bị nhầm lẫn bởi *** đóng *** bị trễ, tức là sử dụng tiện ích để đóng luồng cho bạn. – Perception
Trong trường hợp của tôi, tôi nhận được lỗi này ngay cả khi 'close()' nằm trong mệnh đề 'finally'. –