2016-12-20 3 views
0

問題のAndroidプロジェクトでは、既にシリアライザブルを使用して内部モジュール間で情報を渡しています。パーサブルオブジェクトをシリアライズ可能なものとして送信

私は外部ライブラリを使ってナビゲーションルートを計算するこれらのモジュールの1つに取り組んでいます。

これらの「外部」オブジェクトの1つを別のモジュールに渡す必要があります。これはSerializableではないため、通常送信できません。私の前のプログラマーは、ラッパークラスの静的変数で直列化不可能なオブジェクトをすべて変換しましたが、モジュールが常にアクティブなままであるにもかかわらず、それが良いアイディアかどうかはわかりません。

これは、直列化ラッパークラスです:

private static Road road; 
private NavigationStep firstNavigationStep; 

/** 
* To send the route information to the App. Here is everything the app needs to display the 
* data to the user. 
* @param road the route the user is to follow 
* @param firstNavigationStep the users location and the current Step. 
*/ 
public CurrentRoad(Road road, NavigationStep firstNavigationStep){ 
    this.firstNavigationStep = firstNavigationStep; 
    this.road  = road; 
} 

過渡は私が道路のために全体のラッパークラスは、あまりにも多くの仕事だろう書き込み、データを失うことになりますと道路を書く(そう、オーバーレイを構築するために必要とされます幾何学の多くは内部にあり、私は何かを忘れるかもしれないので、外部の図書館からです)。 Project全体をParcelableに変更することも現実的ではありません。

解決策はありますか?私が必要とするものを静的なものとして保存するのが最善の方法でしょうか?

答えて

0

EventBusを使用してみてください。オブジェクト参照を含むStickyイベントを送信します。そのイベントを明示的にキャンセルするまで、登録されたすべてのオブジェクトに配信されます。

+0

このアーキテクチャでは、すでにメッセージサービスが記述されています。シリアライズ可能なものが使用されています。これは、他の誰かがプロジェクトに書いたMessageMangerです。 私はチームでちょっと新しく、プロジェクトは複数の会社にまたがっているので、外部ライブラリを追加することはそれほど簡単ではありません。 – Raeglan

0

イベント(http://greenrobot.org/eventbus/)を使用して、オブジェクトを必要な場所に渡すことができます。

+0

私たちのアーキテクチャにはすでに説明したメッセージサービスがあります。これは、他の誰かがプロジェクトに書いたMessageMangerです。 私はチームでちょっと新しく、プロジェクトは複数の会社にまたがっているので、外部の図書館を追加するのはそれほど単純ではありません – Raeglan

+0

あなたの質問のニュアンスは分かりませんが、おそらくあなたはそれを保存しようとすることができますあなたの(たぶん拡張された)アプリケーションクラスのシングルトンインスタンスで。アプリケーションコンテキストに常にアクセスできると仮定すると、アプリケーションと同じくらい長く存続するものを保存することができます。そしておそらく、このシネルトンクラスからの値が受信側で読み取られるべきであることをトリガーするインテントまたはその他のシグナルが必要です。 – Julius

関連する問題