3

UI 要素を一時的に非表示にする必要がある場合は、それを非表示にするだけで十分なのか (多くのフレームワークでこのオプションが提供されています)、メモリ内のオブジェクトを削除し、必要に応じて後で再作成する必要があるのか​​ 疑問に思っていました (同じパラメータで)。

各ソリューションの長所と短所は何ですか? 要素を非表示にすることで、重要な状態情報を保存し、割り当て時間を節約できるのではないかと考えていたので、短期間非表示にする必要がある要素にはより良い方法かもしれません。しかし、時間が大きくなるとどうなるでしょうか?その後、メモリ内に不要なオブジェクトがずっと残ります。

1 つの例として、私が話している内容を明確に示すと、コンテキストの変化に基づいてボタンを変更するツールバーが考えられます。つまり、通常、ツールバーにはいくつかのボタンが添付されていますが、ユーザーがインターフェイスの他の部分で 1 つのアクションを選択すると、それらのボタンを新しいものに置き換える必要があります (そのうちの 1 つは「完了」ボタンです)。同様に、ユーザーがツールバーの「完了」ボタンを選択すると、初期状態に戻ります。

これがばかげた質問であるかどうかはわかりませんが、時期尚早の最適化のようなことをしている可能性もあります...しかし、すべての回答に感謝します。

4

4 に答える 4

3

経験則として、再表示する予定の要素は非表示にする必要があると思います。それ以外の場合は破棄されます (いくつかの例外が明らかに適用されます)。これが実行不可能になった場合は、さらに最適化を検討できます。

于 2010-09-06T22:42:08.530 に答える
1

とても良い質問です。これが私に起こることです:

  • (議論のために) 同じスペースに表示できるさまざまなフォームがたくさんあるとします。次に、コントロールを作成/破棄すると、一度にユーザーが表示できるコントロールに対してのみ料金が発生します。一方、コントロールを非表示/表示する場合は、ユーザーが見ていない (決して見ない可能性がある) 多数のコントロールに対して常にお金を払っています。だから私は常に作成/破棄します。(実際には、以前に使用したコントロールをプールに保持しているため、実際には再作成していません。)

  • 多くの人がユーザーの状態を UI のコントロールに保存しますが、個人的にはそれが嫌いで、決して行いません。覚えておく価値のある情報があるとしたら、それはアプリケーションのデータ構造に属していると思います。これはもちろん、現在表示されているフォームのコントロールを「バインド」するか、アプリケーションのデータ構造に合わせて最新の状態に保つ必要があることを意味します。何があってもそれができるようにするだけです。

アプリケーション コードを簡素化する方法でこれらを実現するために、私は創意に富む必要がありました。その結果、私が使用する方法はあまり知られていません。

于 2010-09-06T22:54:51.773 に答える
0

この質問に対する一般的な答えはありません。システムの種類、CPU と RAM の制限、問題の UI 要素の数、UI の表示/再作成の頻度などによって異なります。例を挙げていただければ、より簡潔に説明できるかもしれません。フィードバック。

于 2010-09-06T22:42:45.277 に答える
0

Javascript オブジェクトは、Windows (GDI) オブジェクトとは異なります。通常、メッセージを送受信する意思がなく、ほとんど受動的です。隠すのに必要なコードは少なくて済みますよね? おそらく、ユーザー セッションごとのインタラクティブ オブジェクトの合計量によって異なります。

于 2010-09-06T22:48:07.340 に答える