Android SurfaceFlinger——共享内存读写流程(五十五)
通过上一篇文章的介绍,我们知道了应用进程与 SurfaceFlinger 进程之间的跨进程通信最终选择匿名共享内存的方式实现。并了解了共享内存基本使用方法,这里我们继续了解一下共享内存的粗写操作。
一、写入数据
1、MemoryFile
源码位置:/frameworks/base/core/java/android/os/MemoryFile.java
写入操作能看到就是获取 MemoryFile 的 OutputStream 对象进行操作。
private class MemoryOutputStream extends OutputStream {
private int mOffset = 0;
private byte[] mSingleByte;
@Override
public void write(byte buffer[], int offset, int count) throws IOException {
writeBytes(buffer, offset, mOffset, count);
mOffset += count;
}
@Override
public void write(int oneByte) throws IOException {
if (mSingleByte == null) {
mSingleByte = ne