2010-12-12 38 views

回答

53

這真的取決於你想在你的onDestroy做什麼。這是super.onDestroy所做的(按此順序):

  • 關閉活動管理的任何對話框。
  • 關閉活動管理的所有遊標。
  • 關閉所有打開的搜索對話框

如果你把裏面的onDestroy有事情做與那些Android爲三兩件事的邏輯,那麼你可能擔心的順序。否則,在大多數情況下,這並不重要。

+1

你從哪裏找到這些信息?我很好奇服務等 – 2010-12-12 22:07:20

+1

Android是OpenSouce ...只是看看源代碼:P – Cristian 2010-12-12 22:30:59

5

什麼是你的問題?你可以這樣做,這取決於你是否希望你的超類的onDestroy()在你之前被調用。通常我不認爲它在android中很重要。

此外, onDestroy()不是析構函數。它實際上並沒有破壞對象。這只是一種基於特定狀態而調用的方法。因此,在超類的onDestroy()運行並返回後,您的實例仍然非常活躍。

*最有可能的,Android是免費殺隨時活性,但是你可以認爲它仍然存在。

+4

在C++中,例如,在完成清理私有對象後,您將銷燬超級類。如果你首先摧毀超類,我認爲這不是一個好習慣,我甚至認爲這個應用會崩潰,因爲這個實例將被銷燬! – Vassilis 2010-12-12 20:05:00

+0

正如他所說,這不是一個析構函數,只是告訴組件清理它想要的任何狀態。該對象在onDestroy()調用之後仍然保留。通常順序無關緊要,不會造成崩潰。 – hackbod 2010-12-13 07:21:32

6

在上Reporting Work Status training的ThreadSample.zip,存在的onDestroy()評論

public void onDestroy() { 
    ... 
    // Must always call the super method at the end. 
    super.onDestroy(); 
} 

那麼也許使用廣播接收機時,魯能必須在最後。

+2

這是有道理的。如果你想做任何事情*你當然不希望在一個半被毀壞的(清理過的)物體上做它。 – vbence 2015-01-25 18:15:18

2

由於我們是從基本的Android類延伸,它總是讓父類創建並在創作中首先初始化本身並讓孩子未初始化和/關機時先釋放資源停止部件不錯的辦法。這是推薦的方法。但是,它完全取決於用例和場景。

public void onCreate(Bundle bundle){ 
    super.onCreate(bundle); 
    //perform child class initializations. 
} 

public void onDestroy(){ 
    //perform uninitialization and free resource 
    super.onDestroy(); 
} 
相關問題