2016-05-31 1 views
1

私は3つの活動DEMO1DEMO2Demo3とクラスGlobalClassどのアクティビティがGCによってメモリから消去されますか?

GlobalClass

public Class GlobalClass{ 
public static int staticVar = 1; 
} 

DEMO1

public Class Demo1 extends Activity{ 
onCreate(){ 
    if(buttonClicked = 1){ 
    openDemo2();} 
    else{ 
    openDemo3();} 
    } 
} 
を持っていると仮定210

DEMO2

public Class Demo2 extends Activity{ 
int var = 10; 
onCreate(){ 
    GlobalClass.staticVar = var; 
} 
} 

Demo3

public Class Demo3 extends Activity{ 
    onCreate(){ 
    int var = GlobalClass.staticVar; 
    } 
} 

だから今我々はDEMO1であり、私たちが最初にDEMO2開くと仮定することができます。それから、Demo2を閉じ、Demo1に戻り、Demo3を開きます。その後、Demo3を閉じてDemo1に戻ります。

  • この時点で、アクティビティ/アクティビティはGC後にメモリ にありますか?

  • そのアクティビティの全体のビュー(そのアクティビティのレイアウト)はメモリに を保存しますか?

  • 静的変数は何か違いはありますか?

答えて

0

GCについては何も想定できません。これは、オブジェクトのプロセスと使用の要求に基づいています。 GCはAndroidの低メモリ処理と同じではないため、未使用のプロセスを完全に解体して破壊することに注意してください。あなたのDemo1 - > Demo2 - > Demo3の例では、それらのどれも再生されていないか、ガベージコレクションされていない可能性があります。 Demo1がDemo2を開始すると、Demo1は一時停止して停止しますが、アプリケーションの処理のためにメモリに常駐しています。 Demo2が終了してDemo1に戻ると、Demo2はBACKボタンで終了し(onDestroy()が呼び出されます)、Demo2とその関連メモリがGCを通過します。しかし、それはDemo2で何をするかによっても変わります。あなたが慎重でない場合、誤ってオブジェクトを漏らす可能性があります。

+0

実際に私は、静的変数が参照されているアクティビティか、静的変数が値を持っているアクティビティがあるかどうかを知る必要がありました。 –

+0

ここでの主な点は静的変数です。私は静的変数は何か違いを知る必要がありますか? –

+0

独立したライフサイクルを持つので、アクティビティ間で静的なデータを共有することは非常に悪い考えです。つまり、すべてのクラスで使用される静的フィールドを使用して作成したクラスは、そのアクティビティの1つが存在する限り存在する必要があります。 –

関連する問題