學習筆記: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一起玩耍:https://github.com/Meng997998/AndroidJX

最近不是面試季嘛,再給大家一個福利:【2017-2019字節跳動面試真題解析&簡歷製作PDF模板】

獲取方式:關注我看個人介紹,或直接 點擊我免費領取

針對字節跳動的面試題整理的,進行了分類,循序漸進,由基礎到深入,由易到簡。

將內容整理成了五個章節、計算機基礎面試題、數據結構和算法面試題、Java面試題、Android面試題、其他擴展面試題、非技術面試題總共五個章節354頁。

每個問題都附上1個標準參考答案,都是反覆摸索消化(真心花了很多時間),覺得寫的比較好的文章作爲答案。

來節省大家自己去搜索的時間,把時間用在正確的東西上。。

還整理了全套簡歷製作、春招困惑、HR面試等問題解析參考建議,都是福利分享給大家。

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