當前位置:編程學習大全網 - 源碼下載 - Android源碼追蹤—android:onClick

Android源碼追蹤—android:onClick

之前對源碼的閱讀,總是用時壹通亂七八糟的跳轉,以學會使用為目的;過了壹段時間,就忘記了,因此打算將壹些源碼的閱讀經歷記錄下來,也通過敲壹遍的過程,加深理解。

最開始,用壹個比較簡單的例子來小試牛刀吧

對於View(Button、TextView等)的點擊事件,常用的寫法是通過 findViewById 獲取View的實例,然後通過 setOnClickListener 設置監聽事件,比如我們有如下Button控件。

設置點擊事件(假設在Activity中)

但是還有壹種寫法是在xml布局中通過android:onClick屬性直接指定點擊執行的函數。

思考

首先我們知道諸如 android:xxx 之類的屬性是會在某個attrs文件中定義的,此處的 android:onClick 是View的屬性,定義在如下文件中。

在View的構造函數中,會解析出此屬性的值。

看這裏, 如果變量handlerName不為空,就會為此View設置點擊事件了 ,這個handlerName就是onClick屬性的值doSubmit,但這個點擊事件,並不是我們所熟悉的OnClickListener。

進壹步看看這個 DeclaredOnClickListener 類

DeclaredOnClickListener 實現了 OnClickListener ,其中重點是參數 mResolvedMethod 和 mResolvedContext 。

在onClick事件中最終通過反射 mResolvedMethod.invoke(mResolvedContext, v); 執行了doSubmit方法。

doSubmit的訪問權限是否可以設置為private呢?

答案:不可以,因為源碼中沒有調用 mMethod.setAccessible(true); 註入所有修飾符。

其實在onClick屬性的註釋中就已經說明了。

  • 上一篇:語文學科教學論的閱讀教案如何編寫
  • 下一篇:《菜鳥裹裹》定時派送功能怎麽用?哪些城市支持定時派送?
  • copyright 2024編程學習大全網