成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ActivityThread和ApplicationThread,Android應(yīng)用程序的主線程與AMS通信的橋梁

移動開發(fā) Android
ApplicationThread是ActivityThread?的一個內(nèi)部類,實(shí)現(xiàn)了IApplicationThread? 接口,是一個Binder接口,用于跨進(jìn)程通信(IPC)。ApplicationThread?對象作為 IApplicationThread的服務(wù)端,被AMS等系統(tǒng)服務(wù)通過Binder機(jī)制進(jìn)行調(diào)用。

ActivityThread

ActivityThread是Android系統(tǒng)中負(fù)責(zé)管理和調(diào)度應(yīng)用程序中Activity的一個重要組件。

本質(zhì)與功能:

  • ActivityThread本質(zhì)上是一個線程,用于啟動應(yīng)用程序以及進(jìn)程中進(jìn)行應(yīng)用程序的主循環(huán),可以理解為應(yīng)用程序的主線程或UI線程。
  • 管理應(yīng)用進(jìn)程的主線程的執(zhí)行,根據(jù)AMS的要求(通過IApplicationThread接口,AMS為Client,ActivityThread.ApplicationThread為Server)負(fù)責(zé)調(diào)度和執(zhí)行activities、broadcasts和其他操作。

主要職責(zé):

  • 處理Activity的生命周期:ActivityThread負(fù)責(zé)檢測并執(zhí)行每個Activity的生命周期方法,如onCreate()、onStart()、onPause等,根據(jù)生命周期狀態(tài)控制Activity的創(chuàng)建、啟動、停止和銷毀等過程。
  • 管理消息循環(huán):ActivityThread創(chuàng)建了一個消息循環(huán)機(jī)制,用于處理Activity中的消息和事件,根據(jù)優(yōu)先級來處理和分發(fā)消息。創(chuàng)建的消息包括用戶界面中的用戶事件、Intent和Broadcast請求等。
  • 管理窗口和視圖:負(fù)責(zé)管理窗口的視圖的創(chuàng)建和顯示,以及與窗口和視圖相關(guān)的事件處理。

初始化過程:

  • 在main()方法中,ActivityThread會初始化一些全局狀態(tài),例如創(chuàng)建一個Application對象和一個Instrumentation對象。
  • ActivityThread會創(chuàng)建一個H(Handler)對象,并通過H對象創(chuàng)建一個消息循環(huán)(Looper)。
  • ActivityThread會調(diào)用Instrumentation對象的callApplicationOnCreate()方法,通知App的Application對象進(jìn)行初始化,這也是App中的第一個回調(diào)函數(shù)。
  • ActivityThread會調(diào)用ActivityClientRecord對象的execute()方法,開始執(zhí)行啟動Activity的相關(guān)操作。
  • ActivityThread會依次調(diào)用Activity的生命周期方法,如onCreate()、onStart()、onResume()等。

成員變量和方法:

  • ActivityThread類包含了許多重要的成員變量和方法,如mLooper(表示主線程使用的消息循環(huán))、mActivities(保存當(dāng)前活動(Activity)對象的集合)、mH(Handler對象,處理消息隊(duì)列中的消息)和mInstrumentation(Instrumentation對象,用于執(zhí)行各種測試和測量操作)等。

主線程的主要責(zé)任:

  • 在Android系統(tǒng)中,默認(rèn)情況下,一個應(yīng)用程序內(nèi)的各個組件(如Activity、BroadcastReceiver、Service)都會在同一個進(jìn)程里執(zhí)行,且由此進(jìn)程的主線程負(fù)責(zé)執(zhí)行。主線程的主要責(zé)任是快速處理UI事件。

ApplicationThread

ApplicationThread是ActivityThread的內(nèi)部類,是一個Binder對象。ApplicationThread作為IApplicationThread對象的server端,等待client端的請求然后進(jìn)行處理,其中最大的client就是AMS。

ApplicationThread在Android應(yīng)用程序啟動過程中扮演著重要角色。當(dāng)ActivityThread的handleBindApplication方法被調(diào)用時,會將ApplicationThread與Application對象進(jìn)行綁定,作為應(yīng)用程序與系統(tǒng)服務(wù)之間進(jìn)行通信的橋梁。handleBindApplication方法還會調(diào)用Application對象的onCreate方法,這是應(yīng)用程序啟動過程中的第一個回調(diào)方法。

在Activity的啟動邏輯過程中,ApplicationThread的ScheduleActivity方法會通過一個叫H的Handler發(fā)送一個啟動Activity的信息。ActivityThread也就是我們常說的UI線程或主線程,是程序的入口(main函數(shù)),保存了應(yīng)用中所有的對應(yīng)組件(如活動、服務(wù)和內(nèi)容提供者等)。

創(chuàng)建根Activity:

圖片圖片

Launcher進(jìn)程向AMS請求創(chuàng)建根Activity,AMS會判斷根Activity所需的應(yīng)用程序進(jìn)程是否存在并啟動,如果不存在請求Zygote進(jìn)程創(chuàng)建應(yīng)用程序進(jìn)程。應(yīng)用程序進(jìn)程啟動后,AMS會請求應(yīng)用程序進(jìn)程創(chuàng)建并啟動根Activity。

創(chuàng)建普通Activity:

圖片圖片

在應(yīng)用程序進(jìn)程中的Activity向AMS請求創(chuàng)建普通Activity(步驟1),AMS會對這個Activty的生命周期管和棧進(jìn)行管理,校驗(yàn)(AndroidManifest.xml注冊文件聲明、啟動權(quán)限)Activity等等。如果Activity滿足AMS的校驗(yàn),(判斷進(jìn)程存在)AMS就會請求應(yīng)用程序進(jìn)程中的ActivityThread去創(chuàng)建并啟動普通Activity。

圖片圖片

總結(jié)

ApplicationThread是ActivityThread的一個內(nèi)部類,實(shí)現(xiàn)了IApplicationThread 接口,是一個Binder接口,用于跨進(jìn)程通信(IPC)。ApplicationThread對象作為 IApplicationThread的服務(wù)端,被AMS等系統(tǒng)服務(wù)通過Binder機(jī)制進(jìn)行調(diào)用。

ActivityThread 是Android應(yīng)用程序進(jìn)程的主線程,也就是我們通常所說的UI線程。每個Android應(yīng)用程序進(jìn)程都有一個ActivityThread實(shí)例,負(fù)責(zé)創(chuàng)建和管理應(yīng)用程序的組件(如Activity、Service、BroadcastReceiver等),并處理與這些組件相關(guān)的生命周期事件。

ApplicationThread和ActivityThread是緊密相關(guān)的。ApplicationThread是 ActivityThread 的一個內(nèi)部類,用于處理來自AMS的IPC調(diào)用,并將這些調(diào)用轉(zhuǎn)換為對ActivityThread中相應(yīng)方法的調(diào)用。AMS通過ApplicationThread與ActivityThread進(jìn)行通信,從而管理應(yīng)用程序的生命周期和組件。

責(zé)任編輯:武曉燕 來源: 沐雨花飛蝶
相關(guān)推薦

2012-05-16 13:19:38

SAP移動應(yīng)用移動辦公

2011-11-03 09:41:35

Android簽名安全性

2011-12-23 10:25:11

Android音樂編程控制音量

2012-04-25 22:56:10

Android

2010-03-03 16:45:46

Android應(yīng)用程序

2011-05-24 16:09:57

Androi

2020-08-25 14:03:20

應(yīng)用程序屏蔽應(yīng)用程序內(nèi)保護(hù)網(wǎng)絡(luò)攻擊

2010-12-15 09:51:42

Android程序界面iPhone程序界面設(shè)

2014-09-28 11:28:02

Android應(yīng)用程序生命周期

2009-10-09 17:01:32

VB.NET多線程

2022-09-27 15:16:42

開發(fā)Android應(yīng)用程序

2011-04-15 17:33:39

SWINGAWT

2010-08-12 16:20:57

Flex應(yīng)用程序

2010-03-04 16:21:15

Android Mar

2014-05-27 14:09:52

AndroidActivitysingleTask

2014-05-27 14:12:49

AndroidActivitysingleTask

2014-05-27 14:16:08

AndroidActivitysingleTask

2014-05-27 14:28:25

AndroidActivitysingleTask

2014-05-27 14:44:26

AndroidActivitysingleTask

2014-05-27 15:07:07

AndroidActivitysingleTask
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 中文字幕欧美日韩一区 | 91亚洲精| 蜜桃视频在线观看www社区 | 久久久一区二区 | 免费看国产一级特黄aaaa大片 | 91精品国产乱码久久久久久久 | 欧美黑人一区二区三区 | 国产精品精品久久久 | 五月婷婷丁香婷婷 | 国产精品亚洲一区二区三区在线 | 欧美精品一区二区三区在线播放 | 国产日韩一区二区三区 | 久久精品一区二区三区四区 | av国产精品毛片一区二区小说 | 久久久久国产一区二区三区四区 | 国产伦一区二区三区久久 | 香蕉久久av | 成年人精品视频 | 亚洲国产精品美女 | 日韩专区中文字幕 | 一二三区视频 | av香港经典三级级 在线 | 日本精品在线播放 | 久久一 | 成人黄色在线观看 | 久久成人人人人精品欧 | 日本在线中文 | 亚洲精品日韩在线观看 | 婷婷不卡| 一区视频 | 久青草影院 | 国产精品一区二区不卡 | 天天看天天干 | 国产高清在线观看 | av网站在线播放 | 五月天激情综合网 | 欧美日韩在线电影 | 毛片区 | 国产激情精品 | 国产国产精品久久久久 | 免费一区二区 |