Chinaunix首页 | 论坛 | 博客
  • 博客访问: 100276
  • 博文数量: 30
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 91
  • 用 户 组: 普通用户
  • 注册时间: 2015-07-24 19:49
文章分类

全部博文(30)

文章存档

2017年(11)

2016年(1)

2015年(18)

我的朋友

分类: Android平台

2015-11-03 20:23:05

Android Activity学习笔记——Activity的启动和创建
 Activity概念

  Android的核心不是Application而是Activity,至少在我们开发的时候是这样的

  Activity就是被用来进行与用户交互和用来与android内部特**互的组件,

在应用程序中用到的所有activity都需要在manifest.xml文件中进行注册;

那么Activity又是怎样一种组件,怎么样进行显示交互的,一个activity实例是如何被管理和运行起来的,activity生命周期又是怎么一回事。

 Activity框架和管理结构

Activity管理的核心是AcitivityManagerService,是一个独立的进程;

ActiveThread是每一个应用程序所在进程的主线程,循环的消息处理;

ActiveThreadAcitivityManagerService的通信是属于进程间通信,使用binder机制;


 Activity启动过程

以启动一个应用程序startActivity为例看一下代码执行的大概流程:


可将其分为6个过程:

使用代理模式启动到ActivityManagerService中执行;

创建ActivityRecordmHistory记录中;

通过socket通信到Zgote相关类创建process

通过ApplicatonThreadActivityManagerService建立通信;

5 ActivityManagerService通知ActiveThread启动Activity的创建;

6 ActivityThread创建Activity加入到mActivities中并开始调度Activity执行;

请看下图:


并不是所有启动一个Activity都是这样的过程:一个应用程序中所有Activity只有一个ActivityThread属于一个Process

         ActivityStack并不是每次都需要创建一个Stack来管理Activities

下面看看adnroid系统中四个重要概念:

Application:由多个相关的松散的与用户进行交互Activity组成,通常被打包成apk后缀文件中;

Activities:应用程序的主要组成部分,是应用程序的核心;

ActivityStack:将应用程序中打开的Activity保存在历史栈中,按照栈的先进后出的原则;

Start Activity时入栈,返回时出栈;

Task:将一系列相关的Activity组合,完成某个应用程序完整操作;不管activity属于哪

Application的;

例如:写信息—调用—文件管理,都属于一个Task,但属于两个Application

 Activity启动流程类结构分析

1 ActivityService相关类


使用了Proxy代理模式:ActivityManagerProxy代理ActivityManagerService

并为之提供了公共的访问接口:IActivityManager


2 Activity启动



3 ActivityStack管理


ActivityStack创建并存储系列创建的Activity实例,将其入栈管理mHistory

4 ActivityThread

         This manages the execution of the main thread in anapplication process,

scheduling and executing activities,broadcasts, and other operations on it as the activity manager requests.

         是应用程序的主线程,消息循环执行者;其中有很多的内部类来完成工作;

  ActivityThread使用内部类:ApplicationThreadActivityManagerService进行通信,

  ActivityThread将状态变化传递控制客户端Activity的状态执行;

   mActivities保存由ActivityStack所创建的ActivityRecord相关实例引用;

4 ActivityThread

         This manages the execution of the main thread in anapplication process,

scheduling and executing activities,broadcasts, and other operations on it as the activity manager requests.

         是应用程序的主线程,消息循环执行者;其中有很多的内部类来完成工作;

  ActivityThread使用内部类:ApplicationThreadActivityManagerService进行通信,

  ActivityThread将状态变化传递控制客户端Activity的状态执行;

   mActivities保存由ActivityStack所创建的ActivityRecord相关实例引用;




由于才开始学


阅读(1727) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~