Androidモジュール化では2つのモジュール間でmodelを渡す
998 ワード
背景の説明
最近、モジュール化後のプロジェクトのcommonモジュールを整理していると、当初は業務moduleを分割していたとき、手間を省くために、異なるモジュールに共通に依存しているmodelをcommonモジュールに直接置くと、業務moduleと自分の業務を維持する初心から少し離れ、commonモジュールが肥大化してしまうという問題が発見されました.では、これらの共通のモデルを対応するビジネスモデルに戻す必要があると、異なるモデルのモデルがどのように伝達されるかという問題に直面します.
WechatIMG42.jpeg
イニシアチブ
Module 1でModelAをgsonシリアル番号化
このとき、モデルAとモデルBはもともとParcelableインタフェースを実現しているのに、なぜintentを直接使用しないのかという質問があるかもしれません.getParcelableExtra()は、ここではclass castの問題に触れていますが、ModelAとModelBは異なるmoduleに分布しており、package nameとclass nameは異なり、強引な変換はcast exceptionに報告されますよ~
この方法は简単ですが、実际の问题を解决してくれました.もし友达がもっと良い方法があれば、交流を歓迎します.
最近、モジュール化後のプロジェクトのcommonモジュールを整理していると、当初は業務moduleを分割していたとき、手間を省くために、異なるモジュールに共通に依存しているmodelをcommonモジュールに直接置くと、業務moduleと自分の業務を維持する初心から少し離れ、commonモジュールが肥大化してしまうという問題が発見されました.では、これらの共通のモデルを対応するビジネスモデルに戻す必要があると、異なるモデルのモデルがどのように伝達されるかという問題に直面します.
WechatIMG42.jpeg
イニシアチブ
Module 1でModelAをgsonシリアル番号化
ModelA model = new ModelA("xiaoming", "male");
Gson gson = new Gson();
Bundle bundle = new Bundle;
bundle.putString("modelA", gson.toJson());
module 2では伝達されたjson stringを逆シーケンス化して返しますIntent intent = getIntent();
Gson gson = new Gson();
ModelB model
=gson.fromJson(intent.getStringExtra("modelA", ModelB.class);
これで簡単に問題解決~~このとき、モデルAとモデルBはもともとParcelableインタフェースを実現しているのに、なぜintentを直接使用しないのかという質問があるかもしれません.getParcelableExtra()は、ここではclass castの問題に触れていますが、ModelAとModelBは異なるmoduleに分布しており、package nameとclass nameは異なり、強引な変換はcast exceptionに報告されますよ~
この方法は简単ですが、実际の问题を解决してくれました.もし友达がもっと良い方法があれば、交流を歓迎します.