亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

# 讀 Android 開發藝術探索 &10

2019-11-09 17:54:00
字體:
來源:轉載
供稿:網友

關鍵詞:四大組件 / Activity / Service / BroadcastReceiver / ContentPRovider

本次筆記主要梳理了四大組件的進一步認識,為今后更進一步了解四大組件的工作原理做個準備,溫故知新、查漏補缺。

Android 四大組件中除了 BroadcastReceiver 以外,其它三種組件都必須只在 AndroidManifest 中注冊,而 BroadcastReceiver 既可以在 Manifest 中注冊也可以通過代碼來注冊。Activity、Service、BroadcastReceiver 需要借助 Intent 來調用,而 ContentProvider 無需借助 Intent。

1. Activity #

Activity 是一個展示型的組件;Activity 的啟動由 Intent 來觸發,其中 Intent 分為顯示和隱式,顯示 Intent 可以明確地指向一個 Activity 組件,隱式 Intent 則指向一個或多個目標 Activity 甚至沒有任何一個 Activity 組件可以處理這個隱式 Intent;Activity 組件的主要作用是展示一個界面并和用戶交互,扮演著前臺界面的角色;Activity 只有一種運行模式,即 Activity 處于啟動狀態;

2. Service #

Service 是一種計算型組件,用于后臺執行一系列計算任務;Service 組件工作在后臺,用戶無法感知;Service 組件不同于 Activity,它有兩種狀態:啟動狀態 和 綁定狀態;Service 處于啟動狀態的時候,Service 內部做一些后臺計算,不需和外界有直接的交互。不過,Service 組件本身是運行在主線程中的,耗時的后臺計算仍然需要在單獨的線程中去完成;Service 處于綁定狀態的時候,Service 內部同樣可以做一些后臺計算,并且可以很方便地和 Service 組件進行通信;停止一個 Service 需要靈活采用 stopService 和 unBindService 這兩個方法才能完全停止一個 Service 組件;

強調一下 Service 的兩種狀態: 啟動狀態 —— 主要用于執行后臺計算; 綁定狀態 —— 主要用于其它組件和 Service 的交互; 這兩種狀態是可以共存的,既可以處于啟動狀態也可以同時處于綁定狀態。

Intent intentService = new Intent(this, MyService.class);startService(intentService);Intent intentService = new Intent(this, MyService.class);bindService(intentService, mServiceConnection, BIND_AUTO_CREATE);

來了解一下 Google 官方的說明:

對于 startService: Once started, a service can run in the background indefinitely, even if the component that started it is destroyed. Usually, a started service performs a single Operation and does not return a result to the caller. For example, it might download or upload a file over the network. When the operation is done, the service should stop itself. 用 startService 啟動,這個 Service 不會跟隨者啟動它的 component 消減,而且原則上不能與 UI 互動;

對于 bindService: A bound service offers a client-server interface that allows components to interact with the service, send requests, get results, and even do so across processes with interprocess communication (ipC). A bound service runs only as long as another application component is bound to it. Multiple components can bind to the service at once, but when all of them unbind, the service is destroyed. 用 bindService 的情況下,此 service 可以跟 component 進行溝通,甚至可以做到 IPC

小結: bindService 和 startService 最主要的差別在于其本身的 LifeCycle 以及 bindService 可以用來做 IPC(可以讓你的 service 和 UI 溝通)

3. BroadcastReceiver #

BroadcastReceiver 是一種消息型組件;BroadcastReceiver 用于在不同的組件乃至不同的應用之間傳遞消息;工作在系統內部,用戶不感知;BroadcastReceiver 有兩種注冊的方式:靜態注冊 和 動態注冊;靜態注冊在 manifest 里注冊廣播,在應用安裝時就會被系統解析,不需要應用啟動就可以收到相應廣播;動態注冊通過 Context.registerReceiver() 來實現,不需要時通過 Context.unRegisterReceiver() 來解除廣播,這種注冊方式必須要應用啟動才能注冊并接收廣播;通過 Context 的一系列 send 方法來發送廣播,被發送的廣播會被系統發送給感興趣的廣播接受者,發送和接收過程的匹配是通過廣播接受者的 來描述的;BroadcastReceiver 不適合用來執行耗時的操作;BroadcastReceiver 沒有停止的概念,不需要停止;

當通過 send 方法來發送廣播的時候,AMS 會查找出匹配的廣播接收者并將廣播發送給它們處理。 廣播發送的幾種類型有:普通廣播、有序廣播和粘貼廣播;它們的發送/接收過程是類似的;

4. ContentProvider #

ContentProvider 是一種數據共享型組件,通過 Binder 用于向其它組件乃至其它應用共享數據;ContentProvider 無法被用戶感知,不需要手動停止;ContentProvider 的內部需要實現 增 刪 改 查 這四種操作;ContentProvider 內部維持著一份數據集合,可以通過數據庫、List、Map 等來實現;ContentProvider 內部的 insert / delete / update / query 方法需要處理好線程同步,因為這幾個方法是在 Binder 線程池中被調用

當 ContentProvider 所在的進程啟動的時候,ContentProvider 的 onCreate 要先于 Application 的 onCreate 而執行,這在四大組件中是一個很少有的現象;

End.

Note by HF. Learn from 《Android 開發藝術探索》



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区国产精品视频| 色av吧综合网| 日韩电影免费在线观看中文字幕| www.久久色.com| 欧美日本在线视频中文字字幕| 一区二区av在线| 亚洲久久久久久久久久久| 欧美精品videosex牲欧美| 亚洲国产精品大全| 亚洲色图欧美制服丝袜另类第一页| 日韩电影免费观看在线观看| 欧美xxxx14xxxxx性爽| 亚洲天堂久久av| 国产精品极品尤物在线观看| 国产精品亚洲美女av网站| 九九精品视频在线观看| 亚洲人成电影网站色xx| 国产精品久久精品| 亚洲视频在线免费观看| 国产成+人+综合+亚洲欧美丁香花| 日韩av一区在线观看| 欧美激情精品久久久久久久变态| 亚洲va欧美va国产综合剧情| 亚洲欧美日韩中文视频| 欧美成人精品h版在线观看| 久久欧美在线电影| 伊人久久久久久久久久久久久| 国产精品视频男人的天堂| 亚洲区中文字幕| 亚洲成人av中文字幕| 福利精品视频在线| 久久久久久久久爱| 日本一区二三区好的精华液| 韩国精品久久久999| 欧美激情第1页| 国内免费久久久久久久久久久| 欧美日本高清视频| 一区三区二区视频| 中文字幕精品网| 亚洲欧美综合v| 亚洲激情视频在线播放| 不卡在线观看电视剧完整版| 亚洲男人7777| 91免费国产视频| 亚洲大胆美女视频| 国产精品视频久| 欧美三级欧美成人高清www| 日本久久中文字幕| 久久亚洲精品中文字幕冲田杏梨| 亚洲成人网久久久| 日韩av在线影视| 欧美性猛交xxxx免费看久久久| 国产99久久精品一区二区永久免费| 精品久久久久久久久久| 亚洲男人天堂久| 一区二区三区 在线观看视| 色综合久久久久久中文网| 亚洲欧美日韩天堂| 日韩精品视频免费| 97色在线视频| 精品一区二区三区三区| 国产视频精品免费播放| 国产一区二区av| 欧美激情综合色综合啪啪五月| 成人情趣片在线观看免费| 日韩国产精品亚洲а∨天堂免| 欧美成aaa人片在线观看蜜臀| 久久艹在线视频| 欧美大片第1页| 国产剧情久久久久久| 一区二区国产精品视频| 国产成+人+综合+亚洲欧美丁香花| 最新69国产成人精品视频免费| 国产精品综合久久久| 亚洲热线99精品视频| 欧美日韩国产成人在线| 国产精品稀缺呦系列在线| 92国产精品视频| 精品成人在线视频| 欧美精品激情在线| 中文字幕av一区二区三区谷原希美| 久久99精品国产99久久6尤物| 精品国产欧美成人夜夜嗨| 亚洲黄色www| 精品国产一区二区三区久久狼5月| 92福利视频午夜1000合集在线观看| 欧美第一淫aaasss性| 深夜福利91大全| 成人免费福利视频| 国产精品成人免费视频| 91久久嫩草影院一区二区| 久久精品久久久久| 国产中文欧美精品| 亚洲电影在线看| 91精品国产免费久久久久久| 日韩av大片免费看| 亚洲国产精品成人av| 亚洲女同性videos| 伊人久久久久久久久久| 午夜精品久久久99热福利| 欧美成人激情图片网| 国产成人综合av| 欧美中文在线免费| 日韩成人免费视频| 91免费精品国偷自产在线| 97精品久久久中文字幕免费| 国产一区二区三区欧美| 国产在线999| 亚洲精品日韩欧美| 青青久久av北条麻妃海外网| 中文字幕成人精品久久不卡| 欧美性生活大片免费观看网址| 欧美极品美女电影一区| 欧美色图在线视频| 亚洲视频欧洲视频| 亚洲专区国产精品| 亚洲欧洲在线观看| 日韩成人激情在线| 日韩av有码在线| 成人福利视频在线观看| 亚洲国产三级网| 一区二区三区 在线观看视| 日本在线观看天堂男亚洲| 亚洲二区在线播放视频| 精品动漫一区二区三区| 国产精品久久久久久中文字| 欧美亚州一区二区三区| 成人综合网网址| 欧洲成人在线观看| 91av免费观看91av精品在线| 欧美精品videosex牲欧美| 亚洲精品成a人在线观看| 91精品国产综合久久香蕉| 97国产suv精品一区二区62| 亚洲成色777777在线观看影院| 欧美一区二区大胆人体摄影专业网站| 国内精品美女av在线播放| 亚洲精品美女视频| 国产视频精品免费播放| 欧美性高潮床叫视频| 欧美日韩在线另类| 岛国精品视频在线播放| 亚洲自拍偷拍福利| 日韩成人av网| 欧美贵妇videos办公室| 91av在线不卡| 九九九热精品免费视频观看网站| 成人久久18免费网站图片| 一区二区三区黄色| 亚洲欧美日韩一区二区在线| 亚洲精品在线不卡| 亚洲精品美女久久久久| 亚洲欧美国产va在线影院| 最近的2019中文字幕免费一页| 国产日韩欧美电影在线观看| 久久91亚洲精品中文字幕奶水| 欧美日韩一区二区三区| 91理论片午午论夜理片久久| 久久夜精品va视频免费观看| 欧美性精品220| 日产精品久久久一区二区福利| 国产亚洲一区精品| 欧美色欧美亚洲高清在线视频| 九九热最新视频//这里只有精品|