2015-02-10 146 views
-1

我讀到一篇文章下面的網站android - 設置或不設置實例變量爲null?

[http://developer.android.com/training/basics/activity-lifecycle/starting.html]

在節,「destory活動」

「大多數應用程序並不需要,因爲本地類的引用是實現此方法但是,如果您的活動包含您在onCreate()期間創建的後臺線程或其他長時間運行的資源,如果未正確關閉,該資源可能會泄漏內存,你應該在onDestroy()期間殺掉它們。「

  1. 我是否需要在onDestroy()期間將實例初始化爲null?
  2. 這是什麼意思「長期資源」?例如,你的意思是imageview?
  3. 我需要在onDestroy()期間初始化全局變量爲null嗎?

謝謝。

回答

0
1. Does this instance is null during onDestroy()? 

執行非靜態方法的對象的實例不能爲空。也就是說,Activity實例(由this引用)不會爲空。 Activity的實例字段可能爲空,具體取決於它們是否曾被分配或未分配。

2. What does this mean "long-running resources" ? For example, you mean the imageview? 

「長時間運行的資源」是指東西能活過Activity的壽命。這包括任何ThreadAsyncTask,它們是異步執行的,可能會超過Activity的存在。

它也可能意味着當您通過Activity(或保留對Activity的引用 - 如非靜態內部類)的某個外部對象不與Activity的生命週期相關聯。例如,如果您將Runnable長時間發佈到Handler,如果Runnable有一個引用返回到Activity(如匿名實例),則應確保Runnable已從onDestroy中的Handler中刪除(或可能在之前) 。

3. Do I need to null the global during onDestroy()? 

我不確定你在問什麼。但是如果你分配一個'全局'或靜態字段來引用Activity,這通常是一個壞主意,所以是的,將它分配爲空(或完全刪除它)。否則,您將使用該引用泄漏Activity(GC將無法釋放內存)。

+0

對不起。我不得不編輯一個小問題。 – warrenTaehoon 2015-02-10 11:06:47

+0

謝謝你的答案。 – warrenTaehoon 2015-02-10 11:07:41