我在 Android Studio 中有一个多模块项目,并在纯 Java 模块(称为“应用程序”)中定义我的业务对象(我想在 ui 中使用的 POJO 对象)。最终产品将是连接到服务器的 Android 应用程序。
我的应用程序结构如下(我有一个多层架构,而每一层代表一个模块):
Project
- presentation (android ui)
- application (logic / mapping DTO <--> Business Objects (POJOs))
- data (mapping JSON <--> Data Transfer Object (DTO))
- transport (network communication)
下面的 3 个模块是纯 java/只有第一个是 Android 模块。
现在我的问题是: 我如何仍然将 Android 的 Parcelable 用于提到的 POJO(在纯 Java 模块中)。是否有 gradle 依赖?直到现在我才找到任何东西,所以它会很感激一些有用的提示。
我不想使用 Serializable,也不希望将模块更改为 Android 模块。
更新:我试图在 java 模块中实现 Parcelable(它确实可以正常工作,但在构建时它无法识别 android.os.Parcelable。所以我回到了问题的开头。
更新 II:诸如尝试 Parceler 之类的答案无法正常工作,因为模块中无法识别 android.os.Parcelable。我不是在寻找如何实现 Parcelable 的答案,而是在寻找如何能够在纯 Java 中使用 Parcelable 的答案。谢谢。
解决方案:见下文...
最佳答案
我强烈建议不要使用 Parcelable
。我用了很多。如果您不打算在 Android 中使用 IPC,请避免使用它。如果您不打算在 Android 进程之间传递这些对象,则无需实现 Parcelable
。
如果要在Android进程之间传递对象,那么Parcelable
是必须的。你应该看看AIDL .请注意,即使您使用 AIDL,这些类仍然必须实现 Parcelable
。
你不需要任何特殊的依赖,Android SDK 就足够了。
编辑:
我知道链接的文档说“如果您不需要跨不同的应用程序执行并发 IPC,您应该通过实现 Binder 来创建您的接口(interface),或者,如果您想要执行 IPC,但不需要处理多线程,使用 Messenger 实现您的界面”。根据我的经验,我不同意这个建议。使用绑定(bind)服务和 Messenger
是一条充满隐藏陷阱的痛苦之路。 AIDL 更容易和直接实现。
关于java - 如何在 Java 代码中使用 Parcelable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28966260/