背景描述
最近整理模塊化以后的項目中的 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的哦~
這個方法是很簡單,但是幫我解決了實際問題,如果有小伙伴有更好的方法,歡迎交流~