編輯:關於Android編程
Android Activity學習筆記——Activity的啟動和創建
最近學習Android相關知識,感覺僅僅了解Activity幾個生命周期函數基本上沒有任何意義的;
於是想深入了解一下Activity到底是怎麼一回事怎麼運行來的;裡面的東東真是叫個龐大;
現在只能簡單的了解其框架性的概念和流程;
Android的核心不是Application而是Activity,至少在我們開發的時候是這樣的;
Activity就是被用來進行與用戶交互和用來與android內部特性交互的組件,
在應用程序中用到的所有activity都需要在manifest.xml文件中進行注冊;
那麼Activity又是怎樣一種組件,怎麼樣進行顯示交互的,一個activity實例是如何被管理和運行起來的,activity生命周期又是怎麼一回事。
Activity管理的核心是AcitivityManagerService,是一個獨立的進程;
ActiveThread是每一個應用程序所在進程的主線程,循環的消息處理;
ActiveThread與AcitivityManagerService的通信是屬於進程間通信,使用binder機制;
以啟動一個應用程序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;
使用了Proxy代理模式:ActivityManagerProxy代理ActivityManagerService;
並為之提供了公共的訪問接口:IActivityManager;
ActivityStack創建並存儲系列創建的Activity實例,將其入棧管理mHistory;
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相關實例引用;
漏洞,懇請達人指點多謝;
前言在Activity中一般第一句就是調用setContentView(R.layout.XXX),但這其中系統做了那些工作?我們知道,在ClassLoader裝載了Ma
微信好用錢是一款進行借款貸款的平台,最近這個平台很熱,不少小伙伴都開始在該平台上借款,借款前除了了解該平台的安全性靠譜性外,還需要對該平台利息的算法有所了解
Android中常常使用shape來定義控件的一些顯示屬性,今天看了一些shape的使用,對shape有了大體的了解,稍作總結:先看下面的代碼:<shape>
下面請先看效果圖: 看上去是不很炫的樣子,它的實現上也不是很復雜,重點在與onDraw()方法的繪制。首先是我們的attrs文件:<?xml versio