在同一进程中运行的APK之间共享不可序列化的对象

时间:2015-12-29 16:30:43

标签: java android classloader classcastexception

纯粹是出于兴趣,我想知道是否可以在两个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试图用来投射对象。

两个问题:

  1. 为什么它适用于IBinder?是因为它是由一个公共的ClassLoader加载的(例如系统ClassLoader)?
  2. 有没有办法将IBinder投射到我的图书馆中定义的内容(两个APK之间共享)?我完全免费:例如,如果可能的话,两个APK都可以共享一个ClassLoader。

0 个答案:

没有答案