MemoryFile匿名共享内存使用,vsandroid开发

e.printStackTrace();}return null;}public static MemoryFile openMemoryFile(ParcelFileDescriptor pfd,int length,int mode){if(pfd == null){throw new IllegalArgumentException(“ParcelFileDescriptor 不能为空”);}FileDescriptor fd = pfd.getFileDescriptor();re
摘要由CSDN通过智能技术生成

e.printStackTrace();

}

return null;

}

public static MemoryFile openMemoryFile(ParcelFileDescriptor pfd,int length,int mode){

if(pfd == null){

throw new IllegalArgumentException(“ParcelFileDescriptor 不能为空”);

}

FileDescriptor fd = pfd.getFileDescriptor();

return openMemoryFile(fd,length,mode);

}

/**

  • 打开共享内存,一般是一个地方创建了一块共享内存

  • 另一个地方持有描述这块共享内存的文件描述符,调用

  • 此方法即可获得一个描述那块共享内存的MemoryFile

  • 对象

  • @param fd 文件描述

  • @param length 共享内存的大小

  • @param mode PROT_READ = 0x1只读方式打开,

  •         PROT_WRITE = 0x2可写方式打开,
    
  •         PROT_WRITE|PROT_READ可读可写方式打开
    
  • @return MemoryFile

*/

public static MemoryFile openMemoryFile(FileDescriptor fd,int length,int mode){

MemoryFile memoryFile = null;

try {

memoryFile = new MemoryFile(“tem”,1);

memoryFile.close();

Class<?> c = MemoryFile.class;

Method native_mmap = null;

Method[] ms = c.getDeclaredMethods();

for(int i = 0;ms != null&&i<ms.length;i++){

if(ms[i].getName().equals(“native_mmap”)){

native_mmap = ms[i];

}

}

ReflectUtil.setField(“android.os.MemoryFile”, memoryFile, “mFD”, fd);

ReflectUtil.setField(“android.os.MemoryFile”,memoryFile,“mLength”,length);

long address = (long) ReflectUtil.invokeMethod( null, native_mmap, fd, length, mode);

ReflectUtil.setField(“android.os.MemoryFile”, memoryFile, “mAddress”, address);

} catch (Exception e) {

e.printStackTrace();

}

return memoryFile;

}

/**

  • 获取memoryFile的ParcelFileDescriptor

  • @param memoryFile 描述一块共享内存

  • 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值