2013-10-27 81 views
0

我從來沒有正確理解回調函數的概念。現在我正在學習java和android編程。我遇到過這種方法。爲什麼這種方法必須是回調方法

public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.layout_main); 
} 

從我的正常方法的理解,這種方法的實現裏面,這種方法被自稱,如此實施,將再次啓動,它會再次調用自身,等等...這導致了無限循環調用並開始實施此方法。

有人可以給我推薦一些簡單易用的文檔/教程等,它解釋了什麼是回調方法,它們的執行流程是什麼。

OR

有人能告訴我一個簡單的方法這種方法的onCreate()執行的執行流程,爲什麼是調用本身所需的方法,並且此調用實際上做了什麼。

請儘快回覆,我會很感激,因爲我的工作依賴於這個概念。

回答

3

不,它不會以無限循環結束,因爲您調用超類super.onCreate()onCreate方法。

如果你打電話給this.onCreate()你也不會以無限循環結束。你會得到一個java.lang.StackOverflowError

回調方法由android運行時調用,並允許您掛接Activity的生命週期。

1

super.onCreate(savedInstanceState);

將在Activity類的onCreate方法執行代碼(目前在Activity子類你,從而Activity是你的超級類)。您正在設置一些已經在此定義的基本功能。

這與回調無關。

+0

非常感謝您的回答。 – user2882662

1

它不稱自己。它調用super.onCreate(),因此調用其超類的onCreate()方法。

1

調用`super.onCreate()'在當前類的超類中調用onCreate方法。如果X擴展了Y,那麼在X中的一個方法中,super.onCreate()在Y中調用onCreate()。在Y中的onCreate()完成執行後,將繼續執行X中super.onCreate()後的行。

回調方法是一個不同的問題。當你想要編寫的代碼被某種類型的框架(如Android)調用時,通常在發生某些事件時使用回調方法。在這種情況下,無論被引用的是什麼被創建,它都會調用你的代碼 - 這會讓你的代碼有機會做一些特定於你的應用程序的事情。通常很難知道什麼時候會發生這種情況,特別是在像Android這樣的GUI環境中,回調成爲處理這種情況的常見方式。