【发布时间】:2020-07-03 17:15:15
【问题描述】:
我正在用原生代码对 RGB 数据进行 JPEG 编码,最终的 JPEG 编码数据在原生字节数组中可用。将这些数据写入磁盘的有效方法是什么?无需对此输出进行更多处理。
我能想到的一些选项是:
- 在 Java Native 边界之间复制数据并使用标准 Android 方法将数据写入磁盘。
- 以本机代码本身将数据写入磁盘。但随着 Android Q 转向范围存储访问,我一直在通过 MediaStore 写入数据。我们可以从原生代码写入 MediaStore 吗?
- 在 Java 代码中分配一个 ByteBuffer,将其传递给本机代码进行写入,然后一旦编码结束,将 ByteBuffer 中的数据刷新到磁盘。这看起来很公平,但我更喜欢在原生层进行内存管理,而不是依赖于 java 层中的 GC。
我强烈感觉我的一些假设是错误的,请指出它们以供我学习。
【问题讨论】:
-
如果您查看developer.android.com/training/data-storage 中的表格,您的用例在哪里适合?
-
我的用例是媒体。您在答案中提供的示例似乎很有帮助 - 我将尝试那个。
标签: android memory java-native-interface