2012-07-11 52 views
0

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

像这样:

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

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

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

回答

0

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

就你而言,你需要使用Ashmem。这是一种共享内存,但专门用于Android。我只有这方面的理论知识,从来没有为我自己尝试过。

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

+0

[MemoryFile](http://developer.android.com/reference/android/os/MemoryFile.html)是一个ashmem包装器,使用反射你可以得到一个你可以在进程间传递的文件描述符。 – Jens 2012-07-11 21:35:58

+0

要发送文件描述符,您可以使用活页夹。 – Yury 2012-07-11 21:43:30

+0

谢谢,但我最近听说AIDL在内部使用内存文件/共享内存,所以现在不需要打扰共享内存的性能。 – user1464119 2012-07-17 00:18:57

0

不,你不能有相同的参考,唯一的办法就是通过各种IPC机制复制对象,但引用会不同,因为那些是不能共享内存的2个独立进程。