Android应用程序执行过程分析

合集下载

android启动流程

android启动流程

android启动流程

Android启动流程:

Android是一款广泛使用的移动操作系统,其启动流程是一个

相对复杂的过程,涉及到多个模块的加载和启动。下面将详细介绍Android的启动流程。

1、开机自检(Boot)

当手机开机时,首先进行开机自检。在这个阶段,系统会检测硬件设备的状态,包括电池是否齐全、屏幕是否正常等。如果硬件设备通过了自检,系统将会开始启动。

2、引导加载程序(Bootloader)

开机自检完成后,系统会加载引导加载程序(Bootloader)。

引导加载程序是硬件平台的一部分,其主要作用是启动操作系统。在加载引导加载程序的过程中,系统会自动检测手机的存储器设备,确定存储设备中是否有可用的引导文件。

3、Linux内核加载

一旦引导加载程序找到可用的引导文件,系统将会加载Linux

内核。Linux内核是Android系统的核心组件,负责管理内存、文件系统、驱动程序等。

4、文件系统加载

一旦Linux内核加载完成,系统将会加载文件系统。Android

系统使用的是基于Linux的文件系统,在这个过程中,系统会

加载并初始化各个文件系统,包括根文件系统、系统文件系统、

数据文件系统等。

5、初始化进程(Init)

一旦文件系统加载完成,系统将会启动初始化进程(Init)。初始化进程是Android系统的第一个进程,其作用是启动系统的各个进程和服务。

6、启动用户空间(System Server)

在初始化进程启动后,系统会启动用户空间,加载系统的用户界面等组件。

7、启动应用程序

一旦用户空间加载完成,系统将会启动应用程序。应用程序是Android系统的核心功能,包括系统应用程序和用户安装的应用程序。系统应用程序包括电话、短信、浏览器等,而用户安装的应用程序则是用户根据自己的需求下载和安装的。

如何进行Android应用的用户行为分析和数据统计

如何进行Android应用的用户行为分析和数据统计

如何进行Android应用的用户行为分析和数据统计

随着智能手机的普及和移动应用的不断涌现,Android平台应用

的用户行为分析和数据统计变得愈发重要。通过对用户行为的分析和

数据统计,开发者可以深入了解用户的需求、习惯和行为模式,为用

户提供更好的产品和服务。本文将介绍Android应用的用户行为分析

和数据统计的方法和工具,并探讨其在产品开发中的应用。

一、用户行为分析的重要性

用户行为是用户在使用应用过程中的各种操作行为,如点击按钮、浏览页面、购买商品等。通过对用户行为进行分析,可以了解用户在

使用应用时的偏好、习惯以及潜在需求。这有助于开发者更好地理解

用户,并针对用户需求进行产品改进和优化。同时,用户行为分析还

可以帮助开发者发现应用中存在的问题和瓶颈,提升应用的可用性和

用户体验。

二、数据统计的方法

1. 设备信息统计

在用户安装应用后,可以获得用户的设备信息,如操作系统版本、设备型号等。这些信息对于开发者了解应用的兼容性和性能表现非常

重要,可以帮助开发者针对不同设备做出相应的优化和适配。

2. 用户登录统计

如果应用需要用户登录,那么可以通过用户登录统计来了解用户

的登录频率、登录时间等。这可以为开发者提供宝贵的用户行为数据,帮助其深入了解用户关注的内容和使用的功能。

3. 页面浏览统计

通过统计用户在应用中各个页面的浏览量,可以了解用户对各个

页面的关注程度和使用频率。这有助于开发者分析各个页面的受欢迎

程度,并据此进行页面优化和内容调整。

4. 事件跟踪统计

事件跟踪是指对用户在应用中的各种操作行为进行统计和分析,

Android 事件处理机制

Android 事件处理机制

Android 事件处理机制

Android 作为一款主流的移动操作系统,拥有强大的事件处理机制,使得开发者可以方便地对用户的操作进行响应和处理。本文将介绍Android的事件处理机制及其相关的内容。

一、概述

Android事件处理机制主要用于检测和响应用户在界面上的各种操作,包括点击、滑动、长按等。通过灵活运用Android事件处理机制,开发者可以实现丰富多样的用户交互效果,提升应用的用户体验。

二、事件传递

1. 事件传递的核心概念

- 事件传递分为三个阶段:事件分发、事件拦截、事件处理。

- 事件的传递是从上至下的过程,即从Activity到ViewGroup,再

到最终的View。

2. 事件分发

- 事件首先会被分发给当前界面的顶层View的dispatchTouchEvent()方法进行处理。

- 顶层View会根据具体的触摸事件类型(DOWN、MOVE、UP、CANCEL)进行相应的处理。

3. 事件拦截

- 如果顶层View在处理事件后,认为自己不能完全处理该事件,则会将事件交给子View处理,通过调用子View的dispatchTouchEvent()方法传递事件给子View。

- 子View可以通过重写onInterceptTouchEvent()方法来决定是否拦截事件。

4. 事件处理

- 最终,事件会传递到具体的View上,并通过重写onTouchEvent()方法来实现事件的处理。

- View可以根据具体的事件类型(点击、滑动、长按等)执行相应的操作。

三、事件分发机制

1. 事件分发的层级关系

android启动流程

android启动流程

android启动流程

Android启动流程。

Android系统启动流程是指Android设备在开机时,系统从无

到有的整个启动过程。了解Android启动流程对于开发者和系统维

护者来说都是非常重要的,因此本文将对Android启动流程进行详

细介绍。

1. 加电启动。

当用户按下设备的电源按钮时,电源管理芯片开始为设备供电,同时CPU开始执行启动代码。此时,设备进入了启动阶段。

2. Bootloader启动。

在加电启动后,设备会首先运行Bootloader,Bootloader是设

备的引导程序,负责初始化硬件并加载操作系统。Bootloader会检

查设备的硬件情况,然后加载操作系统内核。

3. 内核启动。

一旦Bootloader加载了操作系统内核,内核开始初始化设备的

硬件,包括CPU、内存、外设等。内核还会挂载根文件系统,并启

动init进程。

4. init进程启动。

init进程是Android系统的第一个用户空间进程,它负责启动

系统的其他进程和服务。init进程会读取init.rc文件,根据文件

中的配置启动系统服务和应用程序。

5. 系统服务启动。

在init进程启动后,系统服务会被依次启动。这些系统服务包

括SurfaceFlinger、Zygote、AMS(Activity Manager Service)、PMS(Package Manager Service)等,它们负责管理系统的各个方面,如界面显示、应用程序管理、包管理等。

6. Launcher启动。

当系统服务启动完成后,Launcher会被启动,用户可以看到设

Android应用程序的动态分析方法研究

Android应用程序的动态分析方法研究

Android应用程序的动态分析方法研

随着手机应用程序的普及,Android成为了全球最流行的移

动操作系统。然而,由于Android应用程序的开放性和复杂性,恶意软件和安全威胁也随之增加。因此,研究和开发动态分析方法来检测和识别潜在的安全问题是非常重要的。

动态分析是指在运行时监测和分析应用程序的行为。它可

以帮助我们了解应用程序的实际执行情况,发现潜在的漏洞和安全问题。下面将详细介绍几种常见的Android应用程序动态

分析方法。

1. 动态代码分析:动态代码分析通过监测应用程序在运行

时的代码执行路径来识别潜在的漏洞和安全问题。这种方法可以帮助我们发现未经处理的异常、内存泄漏和安全漏洞等风险。通过对应用程序的代码执行过程进行监测和记录,我们可以识别潜在的安全问题,并采取相应的措施来修复它们。

2. 动态行为分析:动态行为分析主要关注应用程序在运行

时的行为,并通过分析其行为来识别潜在的威胁和恶意行为。它可以帮助我们检测恶意软件、未经授权的数据访问和隐私泄

露等问题。通过对应用程序的系统调用、网络流量和文件操作等行为进行监测和分析,我们可以发现恶意行为,并及时采取相应的措施来防御和保护用户的隐私和数据安全。

3. 动态内存分析:动态内存分析主要关注应用程序在运行时的内存使用情况,并通过分析内存数据来检测内存泄漏和资源浪费等问题。这种方法可以帮助我们优化应用程序的性能和资源利用,提高用户体验。通过监测和记录应用程序的内存分配和释放过程,我们可以识别潜在的内存问题,并通过适当的优化和调整来解决它们。

移动应用开发中的应用日志记录与分析

移动应用开发中的应用日志记录与分析

移动应用开发中的应用日志记录与分析

移动应用开发在当今社会已经成为一种非常重要的技术与产业,这也导致了越

来越多的开发者参与其中。然而,与其他软件开发一样,移动应用的开发过程中也充满了各种挑战和困惑。其中一个常见的问题是如何进行应用日志的记录与分析。

应用日志是在应用运行过程中记录各种关键信息的一种方式。通过分析应用日志,开发者可以更好地了解应用程序的运行状况、问题点以及用户行为。这对于优化应用的性能和用户体验至关重要。因此,应用日志记录与分析成为了每个移动应用开发者都需要面对的挑战。

首先,应用日志记录的目的是收集有用的数据。在移动应用开发过程中,我们

可以记录用户的点击行为、应用的加载时间、网络请求的状态码等等。这些数据可以帮助我们了解用户在应用中的使用情况和行为习惯,进而进行更好的产品设计和优化。此外,应用日志也可以记录错误日志,帮助开发者快速定位和解决问题。

其次,在移动应用开发中,如何高效地进行应用日志记录也是一个重要的课题。传统的方法包括将日志信息打印到控制台或者保存在本地文件中。然而,这种方法存在一些问题。首先,控制台输出的日志信息无法长久保存,一旦应用关闭,这些信息就会丢失。其次,本地文件存储的方式不够灵活,开发者需要手动去分析和整理这些日志文件。因此,现代的移动应用开发中常采用的方式是使用第三方日志记录框架,将日志信息发送到服务器进行集中管理和分析。

最后,应用日志分析是应用开发过程中的另一个重要环节。通过应用日志分析,我们可以得到更深入的应用运行状况数据。例如,可以分析用户的使用习惯,比如用户使用应用的时间段、使用频率以及最常访问的页面。借助这些数据,开发者可以进一步为用户提供个性化的服务,并进行更精准的市场推广。此外,通过对错误日志的分析,开发者也可以快速定位和解决应用的问题,提高应用稳定性和用户满意度。

详解Android测试全流程及关键环节解析

详解Android测试全流程及关键环节解析

详解Android测试全流程及关键环节解析

在如今移动应用领域的快速发展中,Android平台成为了最受欢迎

的操作系统之一。为了确保Android应用的质量和稳定性,进行全面的测试流程是非常重要的。本文将详细解析Android测试的全流程以及关键环节。

一、测试策略

在进行Android应用测试之前,我们需要制定一个全面的测试策略。测试策略是指通过分析应用的特点和需求,确定测试的目标、范围、

方法和资源等方面的计划。一个好的测试策略可以提高测试的效率和

质量。

1.1 确定测试目标:我们需要明确我们测试的目标是什么,是为了

发现潜在的Bug还是为了确保应用的性能和稳定性。

1.2 确定测试范围:根据应用的特点和需求,确定测试的范围。通

常包括功能测试、性能测试、兼容性测试等方面。

1.3 确定测试方法:根据应用的特点选择合适的测试方法,如黑盒

测试、白盒测试、灰盒测试等。

1.4 确定测试资源:确定测试所需的硬件和软件资源,如设备、测

试工具等。

二、测试计划

测试计划是指根据测试策略确定的测试目标和范围,制定一个详细

的测试计划。测试计划包括测试环境的搭建、测试用例的设计、测试

工具的选择等。

2.1 搭建测试环境:根据应用的需求和测试策略,搭建适合的测试

环境,包括硬件、操作系统、网络环境等。

2.2 设计测试用例:根据应用的功能和用户需求设计合适的测试用例。测试用例应该包括正常情况下的测试和异常情况下的测试。

2.3 选择测试工具:根据测试的需求选择合适的测试工具,如自动

化测试工具、性能测试工具等。

三、测试执行

在测试执行阶段,我们需要按照测试计划进行测试,并记录测试结果。

Android应用程序运行机制解析

Android应用程序运行机制解析

Android应⽤程序运⾏机制解析

在标准的Windows和Linux桌⾯操作系统中,同时可以在不同的窗⼝中运⾏多个应⽤程序,每次只有⼀个应⽤程序是当前焦点状态,但其他的应⽤程序都是⼀个平等的位置。⽤户可以随时切换每个应⽤程序,在不需要应⽤程序时,也需要⽤户来关闭应⽤程序。

但是Android操作系统的应⽤程序却不是采⽤这种⽅式。

Android中每次只有⼀个应⽤程序运⾏在最前⾯,除了状态栏的位置,当前应⽤程序将铺满整个屏幕。⽤户最常见的应⽤程序就是应⽤的主页(Home application),这个程序主要显⽰背景图和应⽤程序快捷⽅式、Widget等,⽤户可以在此激活应⽤程序。

⽤户在Android运⾏⼀个应⽤程序时,Android启动该程序并把它放到最前端,从这个应⽤程序中,⽤户可以启动别的应⽤,或者该应⽤⾃⼰的其他界⾯,⼀个启动⼀个。⽽这些程序和屏幕都被活动管理(Android Activity Manager)记录在应⽤程序堆栈(application stack)中,在任何时候,⽤户可以使⽤后退按钮返回到前⼀个应⽤屏幕,这有点类似浏览器的⽹页浏览历史功能⼀样,⽤户可以使⽤后退按钮返回到上⼀个应⽤屏幕。

在Android内部,每个⽤户界⾯代表⼀个活动类(Activity Class),每个活动有其⾃⾝的⽣命周期,每个应⽤程序有⼀个或多个活动。

在Android中,每个应⽤程序都是“活跃的”,即使它的进程被关闭以后。换⽽⾔之,其活动(Activity)的⽣命周期和其进程的⽣命周期不是绑定在⼀起的,进程只是活动的⼀次性容器⽽已,这与Windows、Linux那些标准的桌⾯操作系统是不同的。在标准的Windows和Linux桌⾯操作系统中,同时可以在不同的窗⼝中运⾏多个应⽤程序,每次只有⼀个应⽤程序是当前焦点状态,但其他的应⽤程序都是⼀个平等的位置。⽤户可以随时切换每个应⽤程序,在不需要应⽤程序时,也需要⽤户来关闭应⽤程序。

安卓应用程序的原理分析

安卓应用程序的原理分析

安卓应用程序的原理分析

1. 概述

安卓应用程序是指在安卓操作系统上运行的应用程序,该应用程序可以运行在

安卓手机、安卓平板等设备上。本文将对安卓应用程序的原理进行分析。

2. 安卓应用程序的组成

安卓应用程序主要由以下几个组件组成:

2.1. Activity

Activity是安卓应用程序的一种基本组件,用于展示用户界面。一个应用程序

可以包含多个Activity,每个Activity显示一个特定的界面。

2.2. Service

Service是安卓应用程序的后台组件,用于处理一些长时间运行的任务,不需

要与用户直接交互。

2.3. BroadcastReceiver

BroadcastReceiver是安卓应用程序的广播接收器,用于接收来自系统或其他应用程序发出的广播消息。

2.4. Content Provider

Content Provider是安卓应用程序的数据提供器,用于在不同应用程序之间共

享数据。

3. 安卓应用程序的生命周期

安卓应用程序的生命周期包括以下几个阶段:

3.1. 创建阶段

在创建阶段,应用程序会进行初始化工作,包括创建Activity、Service等组件。

3.2. 运行阶段

在运行阶段,应用程序会展示界面、处理用户的操作、执行后台任务等。

3.3. 暂停阶段

在暂停阶段,应用程序可以被另一个应用程序覆盖,但仍然保持运行状态。

3.4. 停止阶段

在停止阶段,应用程序对用户不可见,并释放一些资源。

3.5. 销毁阶段

在销毁阶段,应用程序被完全关闭,释放所有资源。

4. 安卓应用程序的工作原理

安卓应用程序通过以下步骤实现其工作原理:

android源码分析之Runtime的初始化

android源码分析之Runtime的初始化

android源码分析之Runtime的初始化

Android运行时作为android架构的一部分,起着非常重要的作用,它和核心库(Core Libraries)组成了Android运行时库层。本文将依据android源码对AndroidRuntime(android运行时)的建立过程进行分析。

1、Android架构中的AndroidRuntime

android采用的是层次化系统架构,它的架构图如下:

由架构图可知,AndroidRuntime处于Linux内核层以及应用框架层中间,而Java的运行环境依赖于Java虚拟机,所以AndroidRuntime对于android系统非常重要。Init进程是Linux 环境下非常重要的一个进程,而Zygote进程是Java环境下的第一个进程,所有其他的Java 环境下的进程都是由Zygote进程来进行fork的,而init进程在启动Zygote进程之后,初始化Zygote进程之前,会先进行AndroidRuntime的启动和环境建立,下文将对此过程进行详细分析。

2、init进程分析

init进程作为linux启动过程中的一个重要的进程,它主要负责文件系统的挂载,属性的初始化,各种配置的加载启动以及Action触发,Service的启动,而Zygote作为Java环境下的服务进程,也在Init.rc中进行了配置,而init进程是由main函数进行触发的,其main函数如下:

//Init.cpp

int main(int argc, char **argv){

androidstudio profiler用法

androidstudio profiler用法

Android Studio Profiler是一种用于分析和优化Android应用程序性能的工具。以下是使用Android Studio Profiler的方法:

1. 打开Android Studio,并在底部面板中选择相应的调试设备。

2. 点击View > Tool Windows > Android Profiler,或者直接点击工具栏中的Android Profiler图标。

3. 在Android Profiler窗口中,您可以选择要追踪的设备,并设置追踪时间和其他参数。

4. 执行应用程序,并使用Android Profiler记录性能数据。您可以在Profiler窗口中查看CPU使用情况、

内存使用情况、网络请求等数据。

5. 分析记录的数据,查找性能瓶颈和优化机会。例如,您可以通过查看CPU使用情况来识别高耗时的函

数或线程,然后优化它们以提高应用程序的性能。

6. 在分析过程中,您可以使用其他工具,如Android Studio的调试器和日志工具,来进一步了解应用程

序的运行情况。

总之,Android Studio Profiler可以帮助您分析和优化应用程序的性能,从而提高用户体验和应用程序的质量。

Android程序启动过程源码分析

Android程序启动过程源码分析

Android应用程序启动过程源代码分析

分类:Android 2011-08-19 00:58 5447人阅读评论(40) 收藏举报

前文简要介绍了Android应用程序的Activity的启动过程。在Android系统中,应用程序是由Activity组成的,因此,应用程序的启动过程实际上就是应用程序中的默认Activity 的启动过程,本文将详细分析应用程序框架层的源代码,了解Android应用程序的启动过程。

在上一篇文章Android应用程序的Activity启动过程简要介绍和学习计划中,我们举例子说明了启动Android应用程序中的Activity的两种情景,其中,在手机屏幕中点击应用程序图标的情景就会引发Android应用程序中的默认Activity的启动,从而把应用程序启动起来。这种启动方式的特点是会启动一个新的进程来加载相应的Activity。这里,我们继续以这个例子为例来说明Android应用程序的启动过程,即MainActivity的启动过程。

MainActivity的启动过程如下图所示:

点击查看大图下面详细分析每一步是如何实现的。

Step 1. Launcher.startActivitySafely

在Android系统中,应用程序是由Launcher启动起来的,其实,Launcher本身也是一个应用程序,其它的应用程序安装后,就会Launcher的界面上出现一个相应的图标,点击这个图标时,Launcher就会对应的应用程序启动起来。

Launcher的源代码工程在packages/apps/Launcher2目录下,负责启动其它应用程序的源代码实现在src/com/android/launcher2/Launcher.java文件中:

手机应用程序运行的原理

手机应用程序运行的原理

手机应用程序运行的原理

1. 概述

本文将介绍手机应用程序运行的基本原理,主要包括应用程序的安装和启动、

应用组件的结构和交互、应用程序的生命周期以及与操作系统的交互等方面。

2. 应用程序的安装和启动

手机应用程序的安装和启动是应用程序运行的基础。通常,应用程序是通过应

用商店或者第三方来源进行安装的。一般情况下,用户只需点击安装按钮即可将应用程序下载到手机上。安装完成后,用户可以通过应用程序列表、桌面图标等方式找到并启动应用。

3. 应用组件的结构和交互

手机应用程序通常由多个组件组成,包括活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供者(Content Provider)。这些组件

之间通过消息传递和回调函数进行交互。

3.1 活动(Activity)

活动是应用程序的用户界面,负责呈现用户界面和处理用户交互。每个活动都

有一个生命周期,包括创建、启动、暂停、恢复、停止和销毁等阶段。通过调用活动之间的切换和跳转,可以实现不同界面的展示和交互。

3.2 服务(Service)

服务是在后台运行的组件,用于执行长时间运行的任务或提供后台服务,不具

备用户界面。服务可以在应用程序被销毁后继续运行,并且可以与其他组件进行交互。

3.3 广播接收器(Broadcast Receiver)

广播接收器用于接收和响应来自系统或其他应用程序发送的广播消息。通过注

册广播接收器,应用程序可以监听特定的广播事件,并进行相应的处理。

3.4 内容提供者(Content Provider)

android 工作原理

android 工作原理

android 工作原理

Android 是一款基于 Linux 内核的开源操作系统,主要用于移动设备。其工作原理涉及以下几个关键组件和技术。

1. Linux 内核:作为底层基础,提供了任务调度、内存管理、设备驱动等核心功能,保证了 Android 的稳定性和安全性。

2. 基础组件:Android 系统包含了一些基础组件,例如系统服务(如 Activity Manager、Window Manager、Package Manager)、库文件(如 Surface Manager、Media Framework)、以及各种系统应用程序(如电话、短信、联系人)等。

3. 应用框架: Android 提供了丰富的应用框架,包括 Activity Manager、Content Provider、View System 等,这些框架为应用程序提供了开发和运行环境。应用程序可以利用这些框架来实现基本功能,同时也可以通过框架来实现与其他应用之间的交互。

4. Dalvik 虚拟机:Dalvik 是 Android 系统的运行时环境,用于执行应用程序的字节码。它通过将字节码转换为机器码并定时执行,实现了快速的应用程序启动和执行。

5. 应用程序包(APK):Android 应用程序以 APK 的形式打包并安装在设备上。APK 文件包含了应用程序的组件、资源文件、配置文件等。

6. 四大组件:Android 应用程序由四大组件构成,包括活动(Activity)、服务(Service)、内容提供程序(Content Provider)和广播接收器(Broadcast Receiver)。这些组件通过 Intent 来进行相互之间的通信和交互。

Android运行时ART加载类和方法的过程分析

Android运行时ART加载类和方法的过程分析

Android运行时ART加载类和方法的过

程分析

在前一篇文章中,我们通过分析OA T文件的加载过程,认识了OAT文件的格式,其中包含了原始的DEX文件。既然ART运行时执行的都是翻译DEX字节码后得到的本地机器指令了,为什么还需要在OAT文件中包含DEX文件,并且将它加载到内存去呢?这是因为ART 运行时提供了Java虚拟机接口,而要实现Java虚拟机接口不得不依赖于DEX文件。本文就通过分析ART运行时加载类及其方法的过程来理解DEX文件的作用。

在前面这篇文章的最后,我们简单总结了ART运行时查找类方法的本地机器指令的过程,如图1所示:

为了方便描述,我们将DEX文件中描述的类和方法称为DEX类(Dex Class)和DEX方法(Dex Method),而将在OAT文件中描述的类和方法称为OAT类(Oat Class)和OA T方法(Oat Method)。接下来我们还会看到,ART运行时在内部又会使用另外两个不同的术语来描述类和方法,其中将类描述为Class,而将类方法描述为ArtMethod。

在图1中,为了找到一个类方法的本地机器指令,我们需要执行以下的操作:

1. 在DEX文件中找到目标DEX类的编号,并且以这个编号为索引,在OAT文件中找到对应的OA T类。

2. 在DEX文件中找到目标DEX方法的编号,并且以这个编号为索引,在上一步找到的OAT类中找到对应的OAT方法。

3. 使用上一步找到的OA T方法的成员变量begin_和code_offset_,计算出该方法对应的本地机器指令。

Android应用进程启动过程(前篇)

Android应用进程启动过程(前篇)

Android应用进程启动过程(前篇)前言

在此前我讲过Android系统的启动流程,系统启动后,我们就比较关心应用程序是如何启动的,这一篇我们来一起学习Android7.0 应用程序进程启动过程,需要注意的是“应用程序进程启动过程”,而不是应用程序启动过程。关于应用程序启动过程,我会在后续系列的文章中讲到。希望阅读这篇文章前先阅读本文列出的相关文章,要不你一脸蒙蔽,就别怪我了。

1.应用程序进程概述

要想启动一个应用程序,首先要保证这个应用程序所需要的应用程序进程已经被启动。ActivityManagerService在启动应用程序时会检查这个应用程序需要的应用程序进程是否存在,不存在就会请求Zygote进程将需要的应用程序进程启动。我提到了Zygote的Java框架层中,会创建一个Server端的Socket,这个Socket用来等待ActivityManagerService来请求Zygote来创建新的应用程序进程的。我们知道Zygote进程通过fock自身创建的应用程序进程,这样应用程序程序进程就会获得Zygote进程在启动时创建的虚拟机实例。当然,在应用程序创建过程中除了获取虚拟机实例,还可以获得Binder线程池和消息循环,这样运行在应用进程中应用程序就可以方便的使用Binder进行进程间通信以及消息处理机制了。关于Binder线程池和消息循环是如何启动或者创建的会在下一篇文章给出答案。先给出应用程序进程启动过程的时序图,然后对每一个步骤进行详细分析,如下图所示。

2.应用程序进程创建过程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最低版本号 目标版本号

应用程序名 项目名 包名 最低android版本 当前android版本

AndroidManifest.xml

应用程序图标

R.java

4个文件夹中文件名相同的文件在R.java中 对应着同一个标记,系统会根据手机的分 辨率从中选择一个合适的文件。

AndroidManifest.xml 应用程序标签
Android应用程序执行过程分析

Android应用程序执行过程分析


Android程序运行时,先读取清单文件,根据清单文件

的信息设置应用程序基本信息,通过过滤条件找到入
口Activity,找到对应的类名,创建该类的实例,自动 调用OnCreate方法,设置Activity显示界面。

AndroidManifest.xml 命名空间 包名 应用程序版本号 应用程序版本名

过滤条件,指定当前Activity为入口Activity

程序运行时,先读取清单文件,根据清单文件的信息设置应用程序基本信息,通过过 滤条件找到入口activity,找到对应的类名,创建该类的实例,自动调用OnCreate方法

MainActivity.java

打包 引入相关包

Activity对象创建 后执行该方法 设置Activity的显 示界面

创建选项菜单 R.java

activity_main.xml 相对布局

Xml命名空间 宽度填充整个屏幕
高度填充整个屏幕

下边距
左边距 右边距 上边距 文本显示框 宽度为内容包裹 高度为内容包裹 显示内容 string.xml



R.java
Βιβλιοθήκη Baidu
string.xml

AndroidManifest.xml

R.java

style.xml

AndroidManifest.xml

“.”代表的是当前包

Activity的类名

Activity的名称 Activity的布局文件

AndroidManifest.xml

Activity的标签

AndroidManifest.xml
相关文档
最新文档