1

静的変数が破棄された場合、それらはすべて破棄されますか? これは私のOnCreateメソッドにあるコードです:

if (!LoadedData)
{
    LoadedData = true;
    SaveData = getSharedPreferences(FILENAME, MODE_PRIVATE);
    LoadData();
    if (MainActivity.ScreenWidth == 0 && MainActivity.ScreenWidthLandscape == 0)
        MainActivity.LoadData();
}

クラスを初めて実行すると、LoadedData のデフォルト値は false になり、保存された値がロードされて静的変数に保存されます。デバイスがローテーションされた後、必要なすべての値が静的変数に保持されるため、このコードは実行されません。そのため、それらを再度ロードするのは効率的ではありません。問題は、すべてではなく一部の静的変数が破棄された場合、プログラムがクラッシュする可能性があることです。静的変数が破棄されると、デフォルト値が保持されますか? たとえば、整数 = 0、ブール値 = false など。

静的変数が破棄されているかどうかをテストする方法がありません。

4

3 に答える 3

1

1 つのクラスの静的変数をチェックすると、そのクラスが破棄されているかどうかがわかります。つまり、そのクラスの他の変数がまだ問題ないかどうかを知ることができます。他のクラスの他の静的変数については何も教えてくれません。

が破棄されている場合LoadedDataは、それを含むクラスが参照されていないためです。クラスがファイナライズされ、ガベージ コレクションが行われました。システムがクラスを再度ロードすると、クラス全体が再初期化されます。

于 2013-07-15T02:26:41.827 に答える
0

デバイスが Android によってローテーションまたは破棄されると、アプリ全体が破棄され、すべての変数を再初期化する必要があります。

于 2013-07-15T01:06:05.143 に答える
0

完全なアプリが破壊されるとは思いません。アクティビティだけだと思います。その後、そのアクティビティが再起動されます。

あなたの変数に。それらがクラスのメンバー変数である場合、クラスが終了する (破棄される) と破棄されます。それ以外の場合 (変数はどのクラスのメンバーでもありません)、グローバル変数は適切なコードではないため、それらをクラス変数として作成することを検討できます。

于 2013-07-15T01:11:03.553 に答える