gpt4 book ai didi

java - android中的MemoryFile有什么用

转载 作者:IT王子 更新时间:2023-10-28 23:31:43 24 4
gpt4 key购买 nike

我想将一些字节写入共享内存。这是在我的应用程序1 中完成的。从我的另一个应用程序:application2 我想访问该共享内存以读取写入的字节。为此,我尝试使用 android 的 MemoryFile 类。我被困在如何在两个不同的应用程序之间引用相同的 fragment 内存。我现在也很困惑 memoryFile 是否用于相同目的。 http://developer.android.com/reference/android/os/MemoryFile.html我找到了关于这个主题的这个链接。提前致谢。克里希纳

最佳答案

如果您想要跨进程使用 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);
}
}
}

您应该查看的是 #getParcelFileDescriptor(MemoryFile)可以从 ContentProvider#openFile(Uri, String) 的实现返回的方法.

关于java - android中的MemoryFile有什么用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8165216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com