Android-在不同apk上的服务之间以捆绑方式传递可序列化或可打包
我正在开发属于不同Android APK的服务之间的消息接口 发送方服务可以向接收方服务发送消息,该消息作为Android-在不同apk上的服务之间以捆绑方式传递可序列化或可打包,android,serialization,process,parcelable,serializable,Android,Serialization,Process,Parcelable,Serializable,我正在开发属于不同Android APK的服务之间的消息接口 发送方服务可以向接收方服务发送消息,该消息作为包实现。 可以正确地交换字符串或布尔值等基本类型 下面的步骤是交换在库中定义的、在不同服务之间共享的更复杂的对象。 这些对象实现了putParcelable或Serializable接口,因此可以使用putParcelable和putSerializable方法将它们封装在包中 不幸的是,这个解决方案不起作用。在服务接收的bundle对象中,parcelable(或serializable
包实现。
可以正确地交换字符串或布尔值等基本类型
下面的步骤是交换在库中定义的、在不同服务之间共享的更复杂的对象。
这些对象实现了putParcelable
或Serializable
接口,因此可以使用putParcelable
和putSerializable
方法将它们封装在包中
不幸的是,这个解决方案不起作用。在服务接收的bundle对象中,parcelable(或serializable)对象由字符串替换。Android似乎在将捆绑包发送到接收方服务之前调用了对象的toString
方法
如果不实现将每个对象序列化为仅由基元类型构成的捆绑包
的方法,有没有解决此问题的方法?您始终可以将Base64
ed对象交换为字符串,并且字符串可以由ByteArray
生成,因此有一个想法可以尝试
实际上,您可以通过字符串传递很多信息:)当您从包中调用getParcelable()
时会发生什么?你得到空值了吗?你的代码中有错误:你可以很容易地在活页夹中传递任何Parcelable
transactions@NoChinDeluxe当我调用getParcelable()
执行对预期类型的强制转换时,抛出类强制转换异常是因为捆绑包中的元素被视为字符串对象。因此,例如,示例对您不起作用?我觉得您实现可包裹接口的方式有问题。你可以发布你的一个包裹的一些代码来展示其中一个失败的例子吗?你是对的。现在,我将该对象序列化为JSON,以便可以将其作为字符串
传递,但如果可能的话,我正在寻找更好的解决方案。