Как использовать ashmem в нативном коде (без связующего)
Можно ли использовать ashmem
не пропуская фд через связующее?
Из моего нативного кода Android я разветвляю два разных процесса. Я хочу использовать общую память между этими двумя процессами во время их выполнения. Как я могу этого достичь?
0 ответов
MemoryFile - это способ использовать общую память в Android. По крайней мере, это то, что я понял. Я нашел пример кода, который я опубликую здесь:
MemoryFile memoryFile = new MemoryFile(null, 5000000);
memoryFile.writeBytes(TEST_BLOB, 0, 1000000, TEST_BLOB.length);
memoryFile.deactivate();
Первый параметр - это имя общей памяти, а второй параметр - длина.
MemoryFile (имя строки, длина int)
- int readBytes (буфер byte[], int srcOffset, int destOffset, int count)
Читает байты из файла памяти.
- void writeBytes (буфер byte[], int srcOffset, int destOffset, int count)
Записать байты в файл памяти.
Вы можете преобразовать байтовый массив в строку, используя,
byte[] bytes = {...}
String str = new String(bytes, "UTF-8");
В примере с MemoryFile
String str=new String(буфер,"UTF-8");
Вы можете преобразовать строку в байтовый массив, используя,
byte[] b = string.getBytes();
byte[] b = string.getBytes(Charset.forName("UTF-8"));
byte[] b = string.getBytes(StandardCharsets.UTF_8);
Вы можете использовать close(), чтобы закрыть MemoryFile, как и любой другой Steam или Файлы.
memoryFile.close()