java - 如何在 Java 代码中使用 Parcelable

标签 java android module gradle android-gradle-plugin

我在 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/

相关文章:

iis-6 - 未在 GetRouteData (System.Web.Routing) 中设置对象引用

java - 如何构建 JPA 2.0 查询

java - 压缩Excel文件、JAVA的问题

java - JPA DELETE 操作中的一对多关系不起作用

Android - 如何使 UI 在不同设备上看起来相同?

java - 无法导入 'com.google.android.maps'

java - Java Play MVC 框架的路由文件中的星号

java - Android App就地更新

php - 在创建的 Joomla 模块中链接背景 CSS 图像

node.js - 使用 module.exports 的 NodeJS 回调