1

そのため、メイン クラス/アクティビティにハンドラーを持つアプリケーションを作成しています。メモリリークを防ぐために static を宣言する必要があるという警告が表示されました。
そのため、問題を説明するいくつかの記事を読み、それを理解していることを知っています(そして、ハンドラーを静的に変更し、弱参照を使用するようにしました)。

しかし、ここで問題が発生します。
特定の非静的変数を変更する (またはそれを行うメソッドを呼び出す) には、ハンドラーが必要です。これらの vars を static として宣言するのはあまり意味がありません (クラス自体ではなく、メイン クラスのインスタンスに属している必要があります)。

どうすればいいですか?

誰かがメイン クラスのインスタンスを作成し、それを使用して非静的変数の値を変更したり、非静的メソッドを呼び出したりするコード ブロックを既に見ました。その新しいインスタンスを作成し、そのインスタンスから変数を使用するとき、私のプログラムは、以前のプログラムと同じ「myInt」または「myString」について話していることをどのように知ることができるので、私には非常に奇妙に思えます。

これが意味をなさない場合、またはうまく説明していない場合は、私がまだ初心者であることを許してくださいb

4

1 に答える 1

0

メイン クラスへの参照を静的変数に保持するか (メイン クラスのインスタンスが 1 つしかないと仮定)、またはメイン クラスへの参照をパラメーターとして静的メソッドに渡すことができます。

静的メソッドで新しいメイン クラスをインスタンス化したくないことは正しいです。これは、メイン クラスの他のコピーには影響しません (コピーの静的メソッド/プロパティのみを変更する場合を除きます。メインクラスのインスタンスなしでこれを行うことができるはずです)

于 2013-04-23T18:11:45.540 に答える