那些你不必定知道的Android知識N系列...java
體現:android
你所看到APP裏每一個單獨的窗口基本上都是Activity。微信
通訊:異步
Activity之間傳輸數據利用的是Intent組件間通訊。ide
使用:post
必須在AndroidManifest.xml配置文件中聲明,系統才能識別到Activity。操作系統
體現:.net
Service主要用於後臺,協助完成應用的指定任務。3d
使用:cdn
- 必須在AndroidManifest.xml配置文件中以標籤聲明所有的Service。
- Service狀態分爲兩種:
![]()
- Service一般位於後臺運行,並無UI界面,Service必需要繼承Service基類,Service一般用來提供後臺服務和監控其餘組件運行狀態。
體現:
- Content Provider使一個應用程序的指定數據集提供給其餘應用程序。其餘應用能夠經過ContentResolver類從該內容提供者中獲取或存入數據,能夠理解爲應用之間內容交換的中間人。
- 只有在多個應用間須要共享數據的時候,內容提供者纔有體現價值。如,通信錄的內容被多個應用獲取(QQ、微信、支付寶等),且必須存儲在一個內容提供者中。它的好處是統一數據訪問方式。
- ContentProvider實現數據共享。ContentProvider用於保存和獲取數據,並使其對全部應用程序可見。這是不一樣應用程序間共享數據的惟一方式,由於android沒有提供全部應用共同訪問的公共存儲區。
使用:
- 開發人員大多數是經過ContentResolver對象實現對ContentProvider的操做,不會直接使用。
- ContentProvider使用URI來惟一標識其數據集,這裏的URI以content://做爲前綴,表示該數據由ContentProvider來管理。
體現:
- 廣播的主要做用是,將應用不感興趣的外部事件直接過濾掉,打比方,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)。
陳皮仔技術專欄:
CSDN:blog.csdn.net/Mr_Lester
簡書:www.jianshu.com/u/2c67d6b3b…
掘金:juejin.im/user/5e7423…
知乎:www.zhihu.com/people/chen…
關注 "陳皮仔" 公衆號,回覆關鍵字"皮友java教程",便可得到無價之寶--->java教程,今後青銅到王者不是夢!