

AcitivityManager产生新进程,新进程从android.app.ActivityThread.main开始运行。这里一般意义上的程序入口点,类似于C的main函数。ActivityThread的main函数中将Looper准备起来,prepareMainLooper标志着这是应用程序主线程的Looper对象。接下来调用attach,参数为false,表明这不是系统进程,是给普通应用程序用使用的进程 ActivityManagerService要Pause当前Activity,就会调用schedulePauseActivity想本地的消息循环中加入一个H.PAUSE_ACTIVITY的消息,然后立即返回以避免ActivityManagerService的阻塞。现在又回到ActivityManagerService中ActivityThread开始调度用户的Activity启动了Acivity与当前App关联,直到这里,平时应用所见的Activity才真正被构建。Activity从产生到初始化的过程就全部结束了。之后就是等待用户界面的消息,根据消息进行相应的处理。整个过程中,在ActivityManagerServeActivityThread的互相协作下构建出Activity,并在相应的时机回调Activity的相应接口,完成Activity的初始化。
Android提供给开发程序员的概念空间中Application只是一个松散的表征概念,没有多少实质上的表征。在Android实际空间中看不到实 际意义上的应用程序的概念,即使有一个叫Application的类,这个也就是个应用程序上下文状态,是一个极度弱化的概念。Application只 是一个空间范畴的概念,Application就是Activity,Service之类的组件上下文描述。Application并不是Android 的核心概念,而Activity才是Android的核心概念。
从Android的SDK文档中,我们知道一般情况Android应用程序是由以下四种组件构造而成的:Activity,Broadcast Intent Receiver,服务(Service),内容提供器(Content Provider)。我们可以使用下面的图来表示一下Android的概念空间。这些组件依附于应用程序中,应用程序并不会一开始就建立起来,而是在这些 组件建立起来后,需要运行时,才开始建立应用程序对象。
默认状态下,Activity Manager Service在应用程序的第一个组件需要运行时将会为应用程序建立一个进程,而这个进程的名字就是android:process=”string”所 指定,缺省的是应用程序包的名字。该进程一旦建立,后面的该应用的组件都将运行在该进程中,他们绑定的根据就是这个Android:Process指定的 名称,因为在他们都在同一个应用程序包里,也就具有了同样的进程名字,于是他们都托管在了同一进程中。组件将通过ClassLoader从Package 中获取到应用程序的信息。
在建立Actvitiy时,如果在应用进程端没有应用对象,系统在该过程中利用makeApplication建立一个Application对象,实例 化"android.app.Application",建立一个应用程序上下文完成例如资源,pack。
下拉视图Spinner
Spinner控件用于显示一个下拉列表Spinner采用MVC模式将前端显示和后端数据进行了分离,Spinner装载数据时并不使用Spinner本身的方法,通过指定一个Adapter对象给Spinner提供数据Spinner。
创建Spinner。Spinner相当于Android系统中的combobox(下拉选择框)Spinner同样使用Adapter提供数据显示在布局中使用<Spinner>标签布局

