2

たとえば、私の gwt-app は 2 つのビューで構成され、appController().goTo(place) を介してビュー 1 からビュー 2 に移動します。ClientFactory はビュー オブジェクトを保持します。

ClientFactoryImpl  implements ClientFactory{

     public View1 getView1(){
          if(view1 == null){
              view1 = new ViewImpl1();
          }
          return view1;
     }

     public View2 getView2(){
          if(view2 == null){
              view2 = new ViewImpl2();
          }
          return view2;
     }
}

view1 のすべての dom 要素がブラウザーから消え、view2 の新しい dom 要素が読み込まれます。ビュー 2 で [戻る] ボタンを押すと、ビュー 1 に戻り、ビュー 1 は以前と同じ状態になります。私の質問は、view2 に移動した後、view1 で何が起こるかです。ボタン、リストなど、view1 のこれらすべての DOM 要素はどうなりますか。彼らはどこにいる?DOM 要素の作成にはコストがかかると書かれていますが、view1 に戻るときに、view1 の DOM 要素を DOM ブラウザに再度レンダリングする必要があります。ナビゲーション後にこれらすべてのウィジェット (DOM 要素の最後の部分) でバックグラウンドで何が起こるか、およびナビゲーションが戻った後にそれらがどのように DOM に戻るか。ClientFactory がビュー オブジェクトの新しいインスタンスを返すたびに、違いはどこにあるのでしょうか? 助けてください!

私の悪い英語で申し訳ありませんが、私の質問が明確であることを願っています.

4

2 に答える 2

1

それらはメモリにキャッシュされ、必要に応じて DOM にコピーされます。移動すると、それらは単に削除されますが、キャッシュはまだそこにあります. 先日YouTubeでこれを見ました。IO 10かそこらだったと思います...リンクを探しに行きましょう...

私はこれだと思います: http://m.youtube.com/watch?v=0F5zc1UAt2Yメモリが正しく機能する場合、Q&A でビュー キャッシュについて話しました。

于 2013-07-03T23:39:12.290 に答える
1

ViewImpl1ViewImpl2インスタンスを遅延初期化されたシングルトンとして保持するためClientFactory、各ウィジェットの DOM 要素はメモリに保持されます。

ウィジェットを別のウィジェットに追加/別のウィジェットから削除すると、その DOM 要素が親ウィジェットの DOM 要素に追加/削除され、最終的にはドキュメントに追加されます。

常に新しいインスタンスを返すように変更ClientFactoryした場合、DOM 要素を再利用するのではなく、常に作成する必要があります。ビューの複雑さによっては、アプリのパフォーマンスに悪影響を与える可能性があります (ただし、大きなビューをメモリに保持すると、特にモバイルやタブレットなどのリソースに制約のあるデバイスでは、メモリを消費しすぎてアプリの速度が低下する可能性があります。これはトレード-オフにすると、適切なバランスを見つける必要があります。次に使用される可能性が最も高い画面をキャッシュ/メモリに保持します)。

上記はすべて、 http://www.gwtproject.org/doc/latest/DevGuideMvpActivitiesAndPlaces.htmlに似たアーキテクチャを想定しています。

于 2013-07-04T00:09:10.647 に答える