0

我正在使用自定义 ROM 的 Android 框架。出于某种原因,我需要通过引用将对象发送到另一个应用程序,而不是通过克隆数据。不想要 AIDL 或意图,因为他们需要通过 Parcelable 或 Json 复制数据。

像这样:

App1
void func1(TextView t)
{
   App2.func2(t);
}

App2
void func2(TextView t)
{
   String s=t.toString();
}

猜测发送引用是可能的,因为我听说 JVM 中没有进程的概念,所以没有进程的边界。可能吗?如果没有,可以在 JNI 下使用 C++ 共享内存完成吗?

4

2 回答 2

0

Android 有自己的虚拟机,称为 Dalvik,与 JVM 不同,Dalvik 在 DalvikVM(进程)的不同实例中运行不同的应用程序。因此,在 Android 中有几种 IPC 机制(Binder 就是其中之一)。

在您的情况下,您需要使用 Ashmem。这是一种共享内存,但专门用于 Android。我在这方面只有理论知识,从未亲自尝试过。

是一篇如何创建共享内存区域的文章。

于 2012-07-11T20:40:54.133 回答
0

不,您不能拥有相同的引用,唯一的方法是通过各种 IPC 机制复制对象,但引用会有所不同,因为它们是 2 个无法共享内存的独立进程。

于 2015-06-30T10:19:55.413 回答