Android的Application理解
一 概述
在之前所使用的的框架:VC的MFC,MTK平台開發;這兩個平台相似之處是:基於Application開發;
MFC是基於Application的Document/View的方式,每個Application就是一個進程;
MTK是基於Application的Screen/Page,Service的方式,每個Application都有自己的內存和管理方式;這兩種方式的核心是:Application;
在Android開發學習中從HelloWord開始,我沒有能夠見到Application的相關代碼,而是以Activity為入口;
讓我感到很奇怪:Android的Application到底是怎么樣的一種開發方式。
從各處了解到的是Android開發的核心是四大組件:Activity,Service,BroadcastReceiver,ContentProvider;
以及Intent,Handler等機制;這樣一些組件所 組成 的“Application”又是怎么一回事呢?
二 Android Application概念
Android中提供了Application這樣一個類;看一下Android官方文檔對此類的解釋:
Base class for those who need to maintain global application state.
You can provide your own implementation by specifying its name in your AndroidManifest.xml's <application> tag,
which will cause that class to be instantiated for you when the process for your application/package is created.
大概意思就是:需要為應用程序提供全局變量,在AndroidManifest.xml中指定所實現的Application子類;
當你的Application進程被建立時,此類被實例化;
文檔解釋中也提到,實現Application子類並不是必須的;
在實現HelloWord程序里面,就沒有實現Application子類,但是系統會為我們默認一個;
就是程序運行還是有Application概念的但不是核心,一個Application是一個進程,Application為整個程序提供Context; 此類使用非常簡單;
Mms模塊重寫了這個類但是很簡單,看看其中做了些什么事情及其作用:
其中重寫了onCreate方法:
public class MmsApp extends Application {
@Override
public void onCreate() {
super.onCreate();
sMmsApp = this;
//對Mms模塊中的類進行配置和初始化:
MmsConfig.init(this);
Contact.init(this);
DraftCache.init(this);
Conversation.init(this);
…… //很多init
}};
三 Android Application
http://blog.csdn.net/maxleng/article/details/5621345
看一下網絡上牛人對這個問題的分析:Android的應用是一個很虛的概念,並沒有實際入口;
Android更多的提供組件(component)的概念;為何要虛化Application這個概念呢?這個虛化就是自由無邊界設計意圖的直接體現。
突出請求和服務,突出組件個體弱化邊界,系統組件可以無邊界交流,服務請求者直接發出請求,無論這個對象服務在何處和屬於誰。
組件是自由獨立的個體;一個程序可以請求其他應用的組件——Android應用框架設計的核心理念;
Android提供給開發程序員的概念空間中Application只是一個松散的表征概念,沒有多少實質上的表征。
在Android實際空間中看不到實際意義上的應用程序的概念,即使有一個叫Application的類,這個也就是個應用程序上下文狀態,
是一個極度弱化的概念。Application只是一個空間范疇的概念,Application就是Activity,Service之類的組件上下文描述。
Application並不是Android的核心概念,而Activity才是Android的核心概念。
Android應用程序是由以下四種組件構造而成的:Activity,Broadcast Receiver,服務(Service),內容提供器(Content Provider)。
我們可以使用下面的圖來表示一下Android的概念空間。這些組件依附於應用程序中,應用程序並不會一開始就建立起來,而是在這些組件建立起來后,
需要運行時,才開始建立應用程序對象。