纯粹是出于兴趣,我想知道是否可以在两个APK 在同一进程中运行之间共享一个对象。该对象来自两个共享的库。 我想分享对象,而不是发送它的副本。
更具体地说,我尝试通过APK Sb
中的服务B
绑定到APK Sa
中的服务A
。我在IBinder
中获得onServiceConnected()
。
如果我尝试向下转换IBinder
,我会得到ClassCastException
:
MyObject myObject = (MyObject) binder;
错误说:com.package.MyObject cannot be cast to com.package.MyObject
。我相信问题来自ClassLoaders:Sb
使用了不同于Sa
的ClassLoader试图用来投射对象。
IBinder
?是因为它是由一个公共的ClassLoader加载的(例如系统ClassLoader)?IBinder
投射到我的图书馆中定义的内容(两个APK之间共享)?我完全免费:例如,如果可能的话,两个APK都可以共享一个ClassLoader。