nit*_*.kk 12 java memory android
我想写一些字节到共享内存.这是在我的application1中完成的.从我的另一个应用程序:application2我想访问该共享内存来读取写入的字节.为此,我尝试使用android的MemoryFile类.我被困在如何在两个不同的应用程序之间引用相同的分片内存.如果memoryFile用于相同的目的,我现在也很困惑. http://developer.android.com/reference/android/os/MemoryFile.html我发现这个主题的链接.提前致谢.克里希纳
Jen*_*ens 12
如果您想要一些跨进程使用,MemoryFile可以使用以下fugly方法:
import android.os.MemoryFile;
import android.os.ParcelFileDescriptor;
import java.io.FileDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class MemoryFileUtil {
private static final Method sMethodGetParcelFileDescriptor;
private static final Method sMethodGetFileDescriptor;
static {
sMethodGetParcelFileDescriptor = get("getParcelFileDescriptor");
sMethodGetFileDescriptor = get("getFileDescriptor");
}
public static ParcelFileDescriptor getParcelFileDescriptor(MemoryFile file) {
try {
return (ParcelFileDescriptor) sMethodGetParcelFileDescriptor.invoke(file);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
throw new RuntimeException(e);
}
}
public static FileDescriptor getFileDescriptor(MemoryFile file) {
try {
return (FileDescriptor) sMethodGetFileDescriptor.invoke(file);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
throw new RuntimeException(e);
}
}
private static Method get(String name) {
try {
return MemoryFile.class.getDeclaredMethod(name);
} catch (NoSuchMethodException e) {
throw new RuntimeException(e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
您应该看到的是#getParcelFileDescriptor(MemoryFile)您可以从实现中返回的方法ContentProvider#openFile(Uri, String).