Android 模块化中两个模块之间传递model

背景描述

最近整理模块化以后的项目中的 common 模块时,发现一个问题:
当初拆分业务 module 的时候,为了省事儿,直接把不同模块公共依赖的 model 放到了 common 模块里,这样导致跟业务 module 维护自己业务的初衷有点背离,而且会让 common 模块比较臃肿,那么现在需要把这些公用的 model 放回到相应的业务 module 里,就会面临一个问题,不同module的model怎么进行传递?

WechatIMG42.jpeg

方案

module1里面把ModelA进行gson序列号化

ModelA model = new ModelA("xiaoming", "male");
Gson gson = new Gson();
Bundle bundle = new Bundle;
bundle.putString("modelA", gson.toJson());

module2 里面把传递的json string再反序列化回来

Intent intent = getIntent();
Gson gson = new Gson();
ModelB model 
 =gson.fromJson(intent.getStringExtra("modelA", ModelB.class);

这样轻松解决了问题~~

这时可能会有小伙伴问了,ModelA 和 ModelB本来就实现了Parcelable 接口,为什么不直接使用intent.getParcelableExtra(),这里就就涉及到了class cast的问题,ModelA 和 ModelB是分布在不同的module,package name 和 class name都是不一样的,强行转换是会报 cast exception的哦~

这个方法是很简单,但是帮我解决了实际问题,如果有小伙伴有更好的方法,欢迎交流~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,890评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,760评论 18 399
  • 女主人公叫杨树,跟班叫野。 对,单名一个野字,杨树不信,哪有人叫野的,野笑,那你叫我野爷好了。野爷?野爷?我呸,...
    8aff4a2fb367阅读 258评论 0 1
  • 你无尽的胭脂红霞 落尘的水粉为谁擦 我无缘的相遇童话 离别的初夏凋了花
    我很懒WHL阅读 360评论 0 12