2

2 つのハンドラー スレッド オブジェクト間で Android のオブジェクト モデルを同期したいと考えています。1 つのオブジェクトは「観察可能」で、2 つ目はオブザーバーです。どちらも独自のスレッドで無限に機能します。オブザーバーは「registerListener」メソッドでobservableに登録し、独自の参照と独自のHandlerを渡します。

また、オブザーバブル オブジェクトは、オブザーバー オブジェクト モデルにコールバック メソッド (ハンドラー) によって渡されます。オブジェクト モデルは「最終」として宣言されます。これは、無限に新しいオブジェクトを作成するのではなく、そのフィールドを新しい値 (ゲッターとセッター) で更新するためです。

オブジェクト参照をオブザーバーに渡したくありません (オブジェクトは変更可能です)。また、スレッドをブロックしたくないため、「同期」キーワードを使用したくありません。

だから私の考えは、「観察可能な」オブジェクトに2つの同じオブジェクトモデルを作成するということです。それらは両方とも「最終」であり、そのうちの1つは「観察可能な」オブジェクトによって使用され、そのスレッドで変更され、2番目はオブザーバースレッドの最初のオブジェクトに基づいて変更されます。したがって、オブジェクトはオブザーバー ハンドラーによって同期されます。それは良いアイデアです?私の説明が明確であることを願っています。

4

3 に答える 3

0

EveyBus を試すことができます: https://github.com/greenrobot/EventBus オブジェクトを使用して独自のイベントを作成します。このようなEventBus.getDefault().post(new MyEventResult());

于 2015-10-11T20:04:46.363 に答える
0

最良のオプションは、ThreadLocal オブジェクトを使用し、スレッドごとに obejct モデルのインスタンスを持つことだと思います。

于 2015-10-12T18:27:04.670 に答える