Android開發藝術探索筆記 第九章 四大組件的工作過程

本篇幅要講講四大組件,這也是我們再熟悉不過的,分別是Activity,Service,BroadcastReceiver,ContentProvider,怎麼使用我們這裏就不多贅述了,我們本篇主要是講他們的執行流程和工作原理,也讓我們更加的瞭解他們,所以本章的側重點在於四大組件的工作過程分析,通過分析他們的工作過程我們可以更好的理解系統內部運行機制,這也有助於我們對系統有一個更加深入的瞭解。

一.四大組件的運行狀態
四大組件當中,除了廣播,其餘三者都需要在清單文件中註冊,對於BroadcastReceiver來說,他既可以靜態註冊,也可以動態註冊,而在調用方式上,除了ContentProvider其他都需要藉助Intent

Activity是一種展示型組件,用於向用戶直接展示一個UI,在用戶眼裏,他只有UI的一個概念,其他的三個組件,並不需要認知,Activity用Intent啓動,可以用顯示意圖指定某個Activity或者多個Activity,也可以用隱式意圖處理,一個Activity也存在多種的啓動模式,這在我們之前就已經講過,所以,就不多說了。停止一個Activity調用finish即可。
Service用於處理後臺,用戶不需要感知,並且他有兩種狀態,分別是啓動狀態和綁定狀態,,Service在啓動的時候,可以做一些後臺邏輯並且不需要與外界交互,但是他仍然運行在主線程中,所以儘量不要耗時,當Service處於綁定狀態的時候,他的內部同樣可以做處理,並且還可以與外部交互,Service線稿停止的話就需要先stopService並且unBindServiceBroadcastReceiver是一種消息型組件,我們俗稱廣播,用於在不同的組件中或者應用中傳遞消息,他同樣無法被用戶感知,開頭就說了,他有兩種註冊方式,靜態和動態,靜態的話只需要在清單文件即可,應用啓動後會自動接聽該廣播,動態的話需要調用Context中的註冊方法,如果不想用了還需要解除註冊,如果應用不啓動責會收不到,發送廣播則是用過Context一系列的send方法,發動和接收的過程是匹配intent-filter來描述的,可以發現,廣播這個組件可以實現低耦合的觀察者模式,觀察者和被觀察者可以沒有任何的耦合,由於廣播的特殊性,他也不適合來做耗時的操作,並且他沒有停止的概念
ContentProvider是一種數據共享的組件,用於和其他應用共享數據,和廣播一樣,他也無法被用戶感知,對於一個ContentProvider來說,他的內部需要實現增刪查改四個操作,在他的內部維持着易芬數據集合,這個數據集合既可以通過數據庫來實現,也可以採用其他類型的實現,比如List和Map,不過要注意的是增刪查改需要處理好線程同步,因爲這幾個方法是在Binder線程池中調用的,另外他也不需要手動停止。

二.Activity的工作過程
系統對Activity做了很多的封裝處理,所以讓Activity的調用過程變得異常簡單,我們只需要

Intent intent = new Intent(this, TestActivity.class);
startActivity(intent);
通過上面的代碼就可以啓動一個TestActivity了,然後新的Activity就展示在用戶的界面,這個過程對於我們開發來講真的再熟悉不過了,這也是很理所當然的事情,但是你有沒有想過,系統內部到底是怎樣去啓動這個TestActivity,比如新的Activity對象實在何時創建的,onCreate又是在何時調用的,可能很多人並不會去關心,在日常開發中確實這些不需要我們知道,但是如果你想在技術的領域更上一層樓,就很有必要知道系統的工作原理了。
我們從activity的startactivity開始分析 startactivity有好幾個重載的方法,但是他們

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章