Android应用程序运行过程分析(学习笔记--ITCAST黎活明)
来源:互联网 发布:淘宝开店考试答案2017 编辑:程序博客网 时间:2024/06/06 01:23
首先从AndroidManifest.xml(功能清单)入手了解其过程,因为一个Android程序在手机中的布署时被读取,也就是说是整个过程的起点。
AndroidManifest.xml是Android应用程序中最重要的文件之一。它是Android程序的全局配置文件,是每个 android程序中必须的文件。它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件(activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息。
因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所必须拥有的信息。一个典型的Android应用程序的结构如下图所示:
<?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的体现,解耦的程序通过自动生成的类来建立联系
- Android应用程序运行过程分析(学习笔记--ITCAST黎活明)
- 单元测试(学习笔记--ITCAST黎活明)
- Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析
- Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析
- Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析
- Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析 .
- Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析
- Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析
- Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析
- 【android】应用程序安装过程分析(二)——————系统正常运行时的安装过程
- Android应用程序签名过程分析
- Android应用程序签名过程分析
- Android 应用程序启动过程分析
- Task运行过程分析笔记
- Hibernate学习笔记1(运行过程)
- 第一个Android应用程序---Android应用的目录结构与运行过程分析
- 小白Java学习笔记(源自itcast-刘意java视频)
- Dalvik学习笔记--运行过程
- VC2010输出文件路径更改
- 神奇的贝叶斯
- java方面图形/图像处理
- c++学习 类静态数据成员用法
- 三星i9220卡刷的刷机教程
- Android应用程序运行过程分析(学习笔记--ITCAST黎活明)
- 特征向量的几何意义
- VC单选按钮控件(Radio Button)用法
- ReadKEY
- 直接用sqlite3处理iphone的短信
- How to test the Internet state
- 心底的梦想
- 特征向量和特征值的几何意义
- 使用classPath自动扫描装配(使用PostConstruct注解)