隨到,我的Android源碼環境開發起步

來源:互聯網
上載者:User

前些時候把Android源碼環境搞定之後,就著手研究線程/進程間的通訊,因為手上的任務是不間斷地擷取裝置事件,再把獲得事件反饋給ui更新。按照Android的設計架構,應用程式調用下層服務是按照的流程:

 

 

但是,對我來說,Android源碼部分內容多了點兒,還不能消化好~~而這次任務主要用到的是類似的流程。

 

 

學習了下源碼,發現源碼在不斷地監聽裝置事件時,會採用Looper與遠端控制的機制,中間會通過管道、訊息佇列什麼的方式來喚醒線程。但就我目前還不瞭解這個方式,於是按照我當前能夠實現的程度,稍作修改後,如:

 

 

先對1,2說明下:

1是當EventNative中成功擷取到裝置的事件數目據時,會調用EventService中的java方法

2是當進行完1後,通知應用程式更新ui

 

由於我這裡沒有使用Looper機制,所以不能讓系統幫忙通知喚醒線程,但是這裡存在這麼一個特性:EventNative調用SystemNative後,會一直線程阻塞直到SystemNative成功擷取裝置事件並把事件傳給EventNative,而這個阻塞是系統核心層級的,所以不會對應用程式層的互動操作有任何影響。於是我利用了這點特性,當EventNative阻塞過後,調用frameworks層的java代碼,以替代Looper中的管道喚醒。這個方法偶合性太強,不利於維護,但作為深入瞭解源碼知識的前奏~

這裡暫不給出代碼,一來是因為明天就是春節,想把這些事兒放放;二來更重要的是,我才寫出自用的Demo,還沒來得及做更多測試與整理。故在些先把一種我這挫思路介紹介紹下。

 

新春來到,祝大家假日愉快,收紅包的收得開開心心,發紅包的發得利利是是~~^_^新的一年,都向新的目標邁進~~~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.