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

在整理模块化项目时,发现将公共Model放在common模块导致模块臃肿,现需将Model回归到各自业务模块。面对跨模块传递问题,采用Gson序列化和反序列化方法解决,避免了因类名和包名不同引发的ClassCastException。这种方法简单有效,但欢迎探讨更优解决方案。
摘要由CSDN通过智能技术生成

背景描述

最近整理模块化以后的项目中的 common 模块时,发现一个问题:

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

76b6fcb25ece?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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的哦~

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值