0

在 Android 中,我使用ParceFileDescriptor中的detachFd方法来获取我传递给本机代码以供使用的文件描述符。由于文件描述符被分离,我使用fdclose在本机代码中关闭它。

既然它是分离的,我还应该关闭ParcelFileDescriptor java实例吗?

在我看来,我不应该这样做,但我发现在 Lollipop 等旧版本的 Android 中,StrictMode 抱怨资源没有关闭,可能是因为不知道它已被分离。

如果即使文件描述符已被分离也需要关闭ParcelFileDescriptor ,如果在本机代码中仍然使用分离的描述符时关闭,是否有任何副作用需要注意?

4

1 回答 1

0

标准做法,像这样:</p>

try (ParcelFileDescriptor pFd = ParcelFileDescriptor.open(new File(path), ParcelFileDescriptor.MODE_READ_WRITE)) {
    int fd = pFd.detachFd();
} catch (IOException e) {
}

因为“ParcelFileDescriptor”和“fd”已经分开,关闭对象不会影响“fd”。

// native

close(fd)
于 2022-01-20T02:27:18.883 回答