Android Activity学习笔记——Activity的启动和创建
?
最近學習Android相關知識,感覺僅僅了解Activity幾個生命周期函數基本上沒有任何意義的;
于是想深入了解一下Activity到底是怎么一回事怎么運行來的;里面的東東真是叫個龐大;
現在只能簡單的了解其框架性的概念和流程;
一?Activity概念
Android的核心不是Application而是Activity,至少在我們開發的時候是這樣的;
Activity就是被用來進行與用戶交互和用來與android內部特性交互的組件,
在應用程序中用到的所有activity都需要在manifest.xml文件中進行注冊;
那么Activity又是怎樣一種組件,怎么樣進行顯示交互的,一個activity實例是如何被管理和運行起來的,activity生命周期又是怎么一回事。
二?Activity框架和管理結構
Activity管理的核心是AcitivityManagerService,是一個獨立的進程;
ActiveThread是每一個應用程序所在進程的主線程,循環的消息處理;
ActiveThread與AcitivityManagerService的通信是屬于進程間通信,使用binder機制;
?
?
?
?
三?Activity啟動過程
以啟動一個應用程序startActivity為例看一下代碼執行的大概流程:
?
?
可將其分為6個過程:
1?使用代理模式啟動到ActivityManagerService中執行;
2?創建ActivityRecord到mHistory記錄中;
3?通過socket通信到Zgote相關類創建process;
4?通過ApplicatonThread與ActivityManagerService建立通信;
5 ActivityManagerService通知ActiveThread啟動Activity的創建;
6 ActivityThread創建Activity加入到mActivities中并開始調度Activity執行;
請看下圖:
?
并不是所有啟動一個Activity都是這樣的過程:一個應用程序中所有Activity只有一個ActivityThread屬于一個Process;
???????? ActivityStack并不是每次都需要創建一個Stack來管理Activities;
下面看看adnroid系統中四個重要概念:
Application:由多個相關的松散的與用戶進行交互Activity組成,通常被打包成apk后綴文件中;
Activities:應用程序的主要組成部分,是應用程序的核心;
ActivityStack:將應用程序中打開的Activity保存在歷史棧中,按照棧的先進后出的原則;
Start Activity時入棧,返回時出棧;
Task:將一系列相關的Activity組合,完成某個應用程序完整操作;不管activity屬于哪
個Application的;
例如:寫信息—調用—文件管理,都屬于一個Task,但屬于兩個Application;
?
四?Activity啟動流程類結構分析
1 ActivityService相關類
?
使用了Proxy代理模式:ActivityManagerProxy代理ActivityManagerService;
并為之提供了公共的訪問接口:IActivityManager;
?
?
2 Activity啟動
?
3 ActivityStack管理
?
ActivityStack創建并存儲系列創建的Activity實例,將其入棧管理mHistory;
4 ActivityThread
???????? This manages the execution of the main thread in anapplication process,
scheduling and executing activities,broadcasts, and other operations on it as the activity manager requests.
?????????是應用程序的主線程,消息循環執行者;其中有很多的內部類來完成工作;
ActivityThread使用內部類:ApplicationThread與ActivityManagerService進行通信,
ActivityThread將狀態變化傳遞控制客戶端Activity的狀態執行;
? mActivities保存由ActivityStack所創建的ActivityRecord相關實例引用;
?
借助網上一些達人的總結以及自己結合代碼的分析,總結上述流程框架方面的東東;
可能并不一定準確或存在漏洞,懇請達人指點多謝;
轉載于:https://www.cnblogs.com/zsw-1993/p/4879420.html
總結
以上是生活随笔為你收集整理的Android Activity学习笔记——Activity的启动和创建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 收集的css布局
- 下一篇: Android开发中activity切换