背景描述
最近整理模块化以后的项目中的 common 模块时,发现一个问题:
当初拆分业务 module 的时候,为了省事儿,直接把不同模块公共依赖的 model 放到了 common 模块里,这样导致跟业务 module 维护自己业务的初衷有点背离,而且会让 common 模块比较臃肿,那么现在需要把这些公用的 model 放回到相应的业务 module 里,就会面临一个问题,不同module的model怎么进行传递?
方案
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的哦~
这个方法是很简单,但是帮我解决了实际问题,如果有小伙伴有更好的方法,欢迎交流~