Android应用程序运行过程分析(学习笔记--ITCAST黎活明)

来源:互联网 发布:淘宝开店考试答案2017 编辑:程序博客网 时间:2024/06/06 01:23

首先从AndroidManifest.xml(功能清单)入手了解其过程,因为一个Android程序在手机中的布署时被读取,也就是说是整个过程的起点。

 

AndroidManifest.xml是Android应用程序中最重要的文件之一。它是Android程序的全局配置文件,是每个 android程序中必须的文件。它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件(activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息。
因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所必须拥有的信息。一个典型的Android应用程序的结构如下图所示:

AndroidManifest

<?xml version="1.0" encoding="utf-8"?><!-- 根目录:定义android命名空间,这样使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据 --><manifest xmlns:android="http://schemas.android.com/apk/res/android" >    <!-- 应用的包,四大组件必须在该包或其子包底下创建,一个应用程序的独立标识 -->    package="My.WeiXiao2"    android:versionCode="1"    android:versionName="1.0" >    <!-- 程序运行需要的最小SDK版本 -->    <uses-sdk android:minSdkVersion="10" />    <application>        <!-- @表示R类,@后面表其内部类,/后面表内部类里的常量,总体表达了一个资源的引用 -->        android:icon="@drawable/ic_launcher"        android:label="@string/app_name" >        <activity>            <!-- activity类的目录,.表示应用的包,后跟类名,表该应用包下的类,若正好是当前应用下的类,.可以省略 -->            android:name=".WeiXiao2"            <!-- @表示R类,@后表R类中的内部类,/后表常量引用 -->   android:label="@string/app_name" >            <!-- 意图过滤器,对意图的匹配 -->            <intent-filter>                <!-- 以下这是意图是所有程序都必有的,程序的入口 -->                <!-- 意图动作,以下动作表程序以此为入口进入 -->                <action android:name="android.intent.action.MAIN" />                <!-- 意图类型,以下类型表程序被显示在启动器 -->                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>

 

 

了解完了AndroidManifest,接着具体的说明一个android程序的运行过程:

首先程序安装时,系统先读取了AndroidManifest,把里面的信息登记到注册表中,简化的可如下图

组件actioncategoryWeiXiao2action.MAINcategory.LAUNCHER 当事件触发时,可通过封装一个intent来包含action 和category信息,然后到表中找到对应的的activity组件类,然后通过反射机制来实例化,具体如下

Intent  ---------->activity-------------->实例化

接下来就到了java代码阶段:

public class WeiXiao2 extends Activity {      @Override    public void onCreate(Bundle savedInstanceState) {       //调用父的方法,做一个底层操作    super.onCreate(savedInstanceState);    //通过R文件的引用引入资源,体现了解耦后的关联方式        setContentView(R.layout.main);          }}



总结:

          整个过程就是通过AndroidManifest的布署,将信息登记到系统,然后再事件触发时发送一个Intent到表中查找,当找到相应的activity组件类后进行实例化,实例化时引入相应的资源。其实整个过程也有MVC的体现,解耦的程序通过自动生成的类来建立联系

	
				
		
原创粉丝点击