學習筆記:Android這四個你不可不知的知識點,你都瞭解多少?
那些你不一定知道的Android知識N系列...
Android的四大元件
- Activity (活動)
- Service (服務)
- Content provider(內容提供器)
- BroadCast Recevicer(廣播)
Activity (活動)
體現:
你所看到APP裡每個單獨的視窗基本上都是Activity。
通訊:
Activity之間傳輸資料利用的是Intent元件間通訊。
使用:
必須在AndroidManifest.xml配置檔案中宣告,系統才能識別到Activity。
Service (服務)
體現:
Service主要用於後臺,協助完成應用的指定任務。
使用:
必須在AndroidManifest.xml配置檔案中以標籤宣告全部的Service。 Service狀態分為兩種: Service通常位於後臺執行,並沒有UI介面,Service必須要繼承Service基類,Service通常用來提供後臺服務和監控其他元件執行狀態。
Content provider(內容提供器)
體現:
Content Provider使一個應用程式的指定資料集提供給其他應用程式。其他應用可以透過ContentResolver類從該內容提供者中獲取或存入資料, 可以理解為應用之間內容交換的中間人。 只有在多個應用間需要共享資料的時候,內容提供者才有體現價值。如,通訊錄的內容被多個應用獲取(QQ、微信、支付寶等),且必須儲存在一個內容提供者中。它的好處是統一資料訪問方式。 ContentProvider實現資料共享。ContentProvider用於儲存和獲取資料,並使其對所有應用程式可見。這是不同應用程式間共享資料的唯一方式,因為android沒有提供所有應用共同訪問的公共儲存區。
使用:
開發人員大多數是 透過ContentResolver物件實現對ContentProvider的操作,不會直接使用。 ContentProvider使用URI來唯一標識其資料集,這裡的URI以content://作為字首,表示該資料由ContentProvider來管理。
BroadCast Recevicer(廣播)
體現:
廣播的主要作用是, 將應用不感興趣的外部事件直接過濾掉,打比方,WIFI斷開的提醒可以利用廣播讓你的應用進行接收並響應。 廣播雖然沒有UI介面,但可以啟動一個Activity或Service來響應它收到的訊息,或者用NotificationManager來通知使用者。 通知提醒可以用很多種方法,閃光燈閃爍、震動、播放聲音等等,一般來說可以直接在狀態列上放一個明顯通知圖示,使用者就可以開啟檢視訊息了。 廣播註冊分為兩種:
使用:
廣播接收者的註冊有兩種方法,分別是 動態註冊和AndroidManifest檔案中進行靜態註冊。
四大元件總結
註冊
4個元件基本上都要註冊才能使用。 Activity、service、Content Provider需要在AndroidManifest檔案中進行配置。 AndroidManifest檔案中未進行宣告的activity、服務以及內容提供者將不為系統所見,從而也就不可用。 而broadcast receiver廣播接收者的註冊分靜態註冊(在AndroidManifest檔案中進行配置)和透過程式碼動態建立並以呼叫Context.registerReceiver()的方式註冊至系統。 需要注意的是在AndroidManifest檔案中進行配置的廣播接收者會隨系統的啟動而一直處於活躍狀態,只要接收到感興趣的廣播就會觸發(即使程式未執行)。
啟用使用
內容提供者的啟用:當接收到ContentResolver發出的請求後,內容提供者被啟用。 activity、服務和廣播接收器被一種叫做intent的非同步訊息所啟用。
關閉
內容提供者僅在響應ContentResolver提出請求的時候啟用。而一個廣播接收器僅在響應廣播資訊的時候啟用。所以,沒有必要去顯式的關閉這些元件。 Activity關閉:可以透過呼叫它的finish()方法來關閉一個activity。 Service關閉:對於透過startService()方法啟動的服務要呼叫Context.stopService()方法關閉服務,使用bindService()方法啟動的服務要呼叫Context.unbindService()方法關閉服務。
額外知識
任務
任務其實就是activity的棧,它由一個或多個Activity組成,共同完成一個完整的使用者體驗。 棧底的是啟動整個任務的Activity,棧頂的是當前執行的使用者可以互動的Activity,當一個activity啟動另外一個的時候,新的activity就被壓入棧,併成為當前執行的activity。 而前一個activity仍保持在棧之中。當使用者按下BACK鍵的時候,當前activity出棧,而前一個恢復為當前執行的Activity。 棧中儲存的其實是物件,棧中的Activity永遠不會重排,只會壓入或彈出。 任務中的所有activity是作為一個整體進行移動的。整個的任務(即activity棧)可以移到前臺,或退至後臺。 Android系統是一個多工(Multi-Task)的作業系統,可以在用手機聽音樂的同時,也執行其他多個程式。每多執行一個應用程式,就會多耗費一些系統記憶體,當同時執行的程式過多,或是關閉的程式沒有正確釋放掉記憶體,系統就會覺得越來越慢,甚至不穩定。 為了解決這個問題,Android引入了一個新的機制,即生命週期(Life Cycle)。
最後
附上我的Android核心技術學習大綱,獲取相關內容來我的GitHub一起玩耍:
vx:xx1341452
最近不是面試季嘛,再給大家一個福利:【2017-2019位元組跳動面試真題解析&簡歷製作PDF模板】
針對位元組跳動的面試題整理的,進行了分類,循序漸進,由基礎到深入,由易到簡。
將內容整理成了五個章節、計算機基礎面試題、資料結構和演算法面試題、Java面試題、Android面試題、其他擴充套件面試題、非技術面試題總共五個章節354頁。
每個問題都附上1個標準參考答案,都是反覆摸索消化(真心花了很多時間),覺得寫的比較好的文章作為答案。
來節省大家自己去搜尋的時間,把時間用在正確的東西上。。
還整理了全套簡歷製作、春招困惑、HR面試等問題解析參考建議,都是福利分享給大家。
獲取方式:關注我看個人介紹,或直接 點選我免費領取
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952849/viewspace-2682340/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 軟體工程師必須知道20個知識點你瞭解多少?軟體工程工程師
- 關於Linux知識你瞭解多少呢?Linux
- 關於Linux系統,這些知識你都瞭解嗎?Linux
- 這些深度學習術語,你瞭解多少?(上)深度學習
- 這些深度學習術語,你瞭解多少?(下)深度學習
- 年終小盤點:這十八個Android開發必備知識點,你都知道嗎?Android
- 面試官帶你學Android——面試中Handler 這些必備知識點你都知道嗎?面試Android
- JS物件,你不可不知的知識體系JS物件
- Android Studio3.3你瞭解多少?Android
- PPT中這個不起眼的功能你瞭解多少?
- 學習 Java,你不得不知的泛型知識Java泛型
- 你不知道的記憶體知識記憶體
- 學習Python,這些你瞭解嗎?Python
- React學習筆記知識點整理React筆記
- 這些關於WebSocket的知識,你知道多少?Web
- Redis面試三大知識點:快取雪崩、快取穿透、快取更新這些你瞭解多少?Redis面試快取穿透
- 《圖解HTTP》學習筆記(附帶WebSocket知識點)圖解HTTP筆記Web
- 2020 總結 | VoltDB的亮點,你瞭解多少?
- 這可能是你學習ES7遺漏的知識點
- JDK10都發布了,nio你瞭解多少?JDK
- 美術、程式、策劃、運營,出海本地化的四個要點你瞭解多少?
- Android:四大架構的優缺點,你真的瞭解嗎?Android架構
- 你所不知道的js的小知識點(1)JS
- 軟體測試知識儲備:關於「登入安全」的基礎知識,你瞭解多少?
- 這 20 多個高併發程式設計必備的知識點,你都會嗎?程式設計
- NIO你真正瞭解多少?
- Appium+python自動化(十五)- Android 這些基礎知識,你知多少???(超詳解)APPPythonAndroid
- 帶你真正瞭解Java,Java程式設計師必學知識點整理Java程式設計師
- Promise學習筆記(知識點 + 手寫Promise)Promise筆記
- [Android學習筆記]雜碎知識(持續更新)Android筆記
- Flutter 上的一個 Bug 帶你瞭解鍵盤與路由的另類知識點Flutter路由
- 【入門知識】關於Linux系統和Windows系統你瞭解多少?LinuxWindows
- 致剛入門的Web前端小白,這些知識你瞭解嗎?Web前端
- 手機怎麼計數你走了多少步?一定有你不知道的冷知識
- 這些喜聞樂見的Java面試知識點,你都掌握了嗎?Java面試
- 這些必會的計算機網路知識點你都掌握了嗎計算機網路
- Java String 物件,你瞭解多少?Java物件
- 當紅“Serverless”,你瞭解多少?Server