日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android四大组件详解

發布時間:2023/12/20 Android 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android四大组件详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一次寫博客,也是第一次接觸安卓,很多格式什么的都不熟悉,如果比較亂還請多多指教。

關注微信公眾號,一起探索

Android四大組件詳解

Android四大組件分別為activity、service、content provider、broadcast receiver。

1、activity

(1)一個Activity通常就是一個單獨的屏幕(窗口)。

(2)Activity之間通過Intent進行通信。

(3)android應用中每一個Activity都必須要在AndroidManifest.xml配置文件中聲明,否則系統將不識別也不執行該Activity。

2、service

(1)service用于在后臺完成用戶指定的操作。service分為兩種:

(a)started(啟動):當應用程序組件(如activity)調用startService()方法啟動服務時,服務處于started狀態。

(b)bound(綁定):當應用程序組件調用bindService()方法綁定到服務時,服務處于bound狀態。

(2)startService()與bindService()區別:

(a)started service(啟動服務)是由其他組件調用startService()方法啟動的,這導致服務的onStartCommand()方法被調用。當服務是started狀態時,其生命周期與啟動它的組件無關,并且可以在后臺無限期運行,即使啟動服務的組件已經被銷毀。因此,服務需要在完成任務后調用stopSelf()方法停止,或者由其他組件調用stopService()方法停止。

(b)使用bindService()方法啟用服務,調用者與服務綁定在了一起,調用者一旦退出,服務也就終止,大有“不求同時生,必須同時死”的特點。

(3)開發人員需要在應用程序配置文件中聲明全部的service,使用標簽。

(4)Service通常位于后臺運行,它一般不需要與用戶交互,因此Service組件沒有圖形用戶界面。Service組件需要繼承Service基類。Service組件通常用于為其他組件提供后臺服務或監控其他組件的運行狀態。

3、content provider

(1)android平臺提供了Content Provider使一個應用程序的指定數據集提供給其他應用程序。其他應用可以通過ContentResolver類從該內容提供者中獲取或存入數據。

(2)只有需要在多個應用程序間共享數據是才需要內容提供者。例如,通訊錄數據被多個應用程序使用,且必須存儲在一個內容提供者中。它的好處是統一數據訪問方式。

(3)ContentProvider實現數據共享。ContentProvider用于保存和獲取數據,并使其對所有應用程序可見。這是不同應用程序間共享數據的唯一方式,因為android沒有提供所有應用共同訪問的公共存儲區。

(4)開發人員不會直接使用ContentProvider類的對象,大多數是通過ContentResolver對象實現對ContentProvider的操作。

(5)ContentProvider使用URI來唯一標識其數據集,這里的URI以content://作為前綴,表示該數據由ContentProvider來管理。

4、broadcast receiver

(1)你的應用可以使用它對外部事件進行過濾,只對感興趣的外部事件(如當電話呼入時,或者數據網絡可用時)進行接收并做出響應。廣播接收器沒有用戶界面。然而,它們可以啟動一個activity或serice來響應它們收到的信息,或者用NotificationManager來通知用戶。通知可以用很多種方式來吸引用戶的注意力,例如閃動背燈、震動、播放聲音等。一般來說是在狀態欄上放一個持久的圖標,用戶可以打開它并獲取消息。

(2)廣播接收者的注冊有兩種方法,分別是程序動態注冊和AndroidManifest文件中進行靜態注冊。

(3)動態注冊廣播接收器特點是當用來注冊的Activity關掉后,廣播也就失效了。靜態注冊無需擔憂廣播接收器是否被關閉,只要設備是開啟狀態,廣播接收器也是打開著的。也就是說哪怕app本身未啟動,該app訂閱的廣播在觸發時也會對它起作用。

(4)Android還有一套本地廣播機制,就是為了解決廣播的安全問題,因為系統全局廣播可以被其他任何程序接收到,一些攜帶關鍵性數據的廣播就可能被其他應用程序截獲。而本地廣播機制發出的廣播只能在應用程序的內部進行傳遞,并且只能接收來自本應用程序的廣播,這樣就不存在安全問題了。

(5)今天了解了Android的靜態注冊和動態注冊,Android在8.0以后,為了提高效率,刪除了靜態注冊,防止關閉App后廣播還在,造成內存泄漏。現在靜態注冊的廣播需要指定包名,而動態注冊就沒有這個問題。并且,無論是靜態注冊廣播還是動態注冊廣播,在接收廣播的時候都不能攔截廣播,否則會報錯。
谷歌官網的原文是:應用無法使用其清單注冊大部分隱式廣播。不過,是不能對大部分的廣播進行注冊,但還是有些廣播可以進行靜態注冊的,比如對接收Android開機的廣播通過靜態注冊還是能夠正常接收的。

5、Intent介紹

Intent是Android系統用來抽象描述要執行的一個操作,也可以在不同組件之間進行溝通和消息傳遞。
顯式的Intent就是你已經知道要啟動的組件名稱,比如某個Activity的包名和類名,在Intent中明確的指定了這個組件(Activity),一般來說這種Intent經常用在一個應用中,因為你已經明確的知道要啟動的組件名稱。
隱式的Intent就是你不知道要啟動的組件名稱,只知道一個Intent動作要執行,比如:拍照,錄像,查看地圖。一般來說這種Intent用在不同的應用之間傳遞信息。

總結

以上是生活随笔為你收集整理的Android四大组件详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。