如果你写一些数据,它工作得很好。但是如果你写了很多数据(会运行很长时间),它会失败:java.io.IOException: write failed: EBADF (Bad file number)
这是代码:
writeLargeDataToStream(new FileOutputStream(getContentResolver()
.openFileDescriptor(data.getData(), "w").getFileDescriptor()));
如果你写一些数据,它工作得很好。但是如果你写了很多数据(会运行很长时间),它会失败:java.io.IOException: write failed: EBADF (Bad file number)
这是代码:
writeLargeDataToStream(new FileOutputStream(getContentResolver()
.openFileDescriptor(data.getData(), "w").getFileDescriptor()));
看来您需要ParcelFileDescriptor
通过将其放入这样的本地字段来防止垃圾收集:
private ParcelFileDescriptor descriptor;
并这样做:
descriptor = getContentResolver().openFileDescriptor(data.getData(), "w");
writeLargeDataToStream(new FileOutputStream(descriptor.getFileDescriptor()));
完成使用后,让垃圾收集器知道它是可收集的:
descriptor = null;