1

変数が宣言されている Activity クラスを表示するために開かなくても、Android アプリのどこにでも変数にアクセスしたいです。これに使用できる静的変数はありますか。異なるアクティビティ間を移動する場合、この変数にアクセスして、変更を失うことなく変更および変更できますか?

この目的で共有設定と sqlite データベースを使用して変数を格納できることは理解していますが、これに static を安全に使用できるかどうかを知りたいと思いました。私の唯一の心配は、アプリがまだ使用されている間に何らかの理由で、アプリが開いて使用されている間に静的変数がガベージコレクションされることです。

また、アプリケーションクラスのグローバル変数を作成したくありませんでした。代わりに、アプリの Java または Android クラスのいずれかで静的変数を使用することについて知りたかったのです。

4

5 に答える 5

1

クラスのロード中は、静的変数をガベージ コレクションの対象にすることはできません。それらは、それぞれのクラスローダーがクラスを削除するか、それ自体がガベージとして収集されるときに収集できます。

于 2013-07-02T06:42:18.293 に答える
0

静的変数は、含まれているクラスが JVM にロードされたままになるまで、ガベージ コレクションの対象になりません。このような変数は、ClassLoaders によって参照される Class オブジェクトによって参照されます。ClassLoader が何らかの方法で Class を削除するか、ClassLoader 自体がコレクションの対象になる場合、Tehy は 2 つの非常にまれなシナリオでのみガベージ コレクションを行うことができます。

JLS § 12.7の詳細:

§12.6 で説明されているように、クラスまたはインターフェイスを定義しているクラス ローダーがガベージ コレクターによって再利用される場合にのみ、クラスまたはインターフェイスをアンロードできます。ブートストラップ ローダーによってロードされたクラスとインターフェイスは、アンロードされない場合があります。

于 2013-07-02T06:43:38.363 に答える
0

クラス AppConstants を作成します。次に、静的変数を次のように作成します。 public static String name="zz"; 次に、 Appconstants.name のような場所にアクセスします

于 2013-07-02T06:46:27.927 に答える