Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android學習筆記——Activity的啟動和創建

Android學習筆記——Activity的啟動和創建

編輯:關於Android編程

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為例看一下代碼執行的大概流程:

    vcb0tq+1vUFjdGl2aXR5TWFuYWdlclNlcnZpY2XW0Na00NCjuzwvcD4KPHA+MiC0tL2oQWN0aXZpdHlSZWNvcmS1vW1IaXN0b3J5vMfCvNbQo7s8L3A+CjxwPjMgzai5/XNvY2tldM2o0MW1vVpnb3Rlz+C52MDgtLS9qHByb2Nlc3OjuzwvcD4KPHA+NCDNqLn9QXBwbGljYXRvblRocmVhZNPrQWN0aXZpdHlNYW5hZ2VyU2VydmljZb2owaLNqNDFo7s8L3A+CjxwPjUgQWN0aXZpdHlNYW5hZ2VyU2VydmljZc2o1qpBY3RpdmVUaHJlYWTG9LavQWN0aXZpdHm1xLS0vaijuzwvcD4KPHA+NiBBY3Rpdml0eVRocmVhZLS0vahBY3Rpdml0ebzTyOu1vW1BY3Rpdml0aWVz1tCyor+qyry197bIQWN0aXZpdHnWtNDQo7s8L3A+CjxwPsfrv7TPws28o7o8L3A+CjxwPqGhoaE8L3A+CjxwPqGhoaGhoaGhoaGhoaGhoaGhoaGhPGltZyBzcmM9"/uploadfile/Collfiles/20141114/2014111409065190.jpg" alt="\">

並不是所有啟動一個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

Thismanages the execution of the main thread in anapplication process,

schedulingand executing activities,broadcasts, and other operations on it as the activitymanager requests.

是應用程序的主線程,消息循環執行者;其中有很多的內部類來完成工作;

  ActivityThread使用內部類:ApplicationThread與ActivityManagerService進行通信,

  ActivityThread將狀態變化傳遞控制客戶端Activity的狀態執行;

  mActivities保存由ActivityStack所創建的ActivityRecord相關實例引用;

    ?繃jl逗'凔-畨帼歭逗'仺ky漏洞,懇請達人指點多謝;

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved