Как использовать 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()

Другие вопросы по тегам