2017-08-19 18 views

回答

2

讓我們從一點背景開始:當你啓動一個應用程序時會發生什麼? 操作系統啓動一個進程併爲其分配一個唯一的進程ID並分配一個進程表。一個進程啓動一個DVM實例(Dalvik VM);每個應用程序在DVM中運行。 一個DVM管理類加載卸載,實例生命週期,GC等。

靜態變量的生存期:靜態變量在類被JVM加載時死亡並在類卸載時死亡。

因此,如果您創建一個Android應用程序,並初始化靜態變量,它會留在JVM中,直到發生下列情況之一:

  1. 類被卸載

  2. JVM關閉

  3. 過程中死亡

請注意,當您切換到其他應用程序的不同活動時,靜態變量的值將保持不變,並且上述三項都不會發生。如果上述三種情況發生,靜態將失去其價值。

您可以用幾行代碼測試:

  • 打印未初始化的靜態在活動的onCreate - >應打印空

  • 初始化靜態。打印它 - >值將是非空

  • 點擊後退按鈕並進入主屏幕。注意:主屏幕是另一項活動。

  • 再次啓動你的活動 - >靜態變量爲非空

  • 殺死從DDMS您的應用程序(在設備窗口停止按鈕)。

  • 重新啓動您的活動 - >靜態將具有空值。

您的問題的答案。 是的,如果你的所有活動都被破壞了,你的申請程序將被殺死。

現金Samuh

+0

是的,我注意到that.My的問題是將Android應用程序殺的過程,如果它的所有活動都被破壞? – undefined

+1

是的,如果你的所有活動都被破壞了,你的申請程序將被殺死。 –

+0

非常感謝!您能否將此添加到您的答案中,以便將其標記爲已接受? – undefined