Android Activity原理分析 联系客服

发布时间 : 星期一 文章Android Activity原理分析更新完毕开始阅读

Tech

Android Activity原理分析

Revision History Date Issue Description Author wylhistory <27/09/2010> <0.5> 目录

1. ABSTRACT .................................................................................................................................................................................... 3 2. INTRODUCTION .......................................................................................................................................................................... 3 3. ACTIVITY的简单介绍 .................................................................................................................................................................. 3 4. ACTIVITY的生命周期介绍 .......................................................................................................................................................... 3 5. ACTIVITY的各个状态的切换细节 .............................................................................................................................................. 5 5.1 ACTIVITY的启动过程 ............................................................................................................................................................... 5 5.1.1 客户端执行逻辑 .............................................................................................................................................................. 5 5.1.2 ActivityManagerService的执行逻辑 ................................................................................................................................ 9 5.1.3 新的activity的进程逻辑 ................................................................................................................................................. 15 5.1.4 OnCreate函数的调用 ..................................................................................................................................................... 19 5.1.5 OnStart的调用 ................................................................................................................................................................ 19 5.1.6 OnResume的调用 ........................................................................................................................................................... 21 5.2 从暂停到继续的过程分析 ..................................................................................................................................................... 22 5.2.1 暂停操作的原由 ............................................................................................................................................................ 22 5.2.2 onPause的调用 ............................................................................................................................................................... 24 5.2.3 onStop的调用 ................................................................................................................................................................. 26 5.2.4 OnResume的调用 ........................................................................................................................................................... 33 6. 总结 ................................................................................................................................................................................................ 36 7. 未分析 ............................................................................................................................................................................................ 37 8. 附录 ................................................................................................................................................................................................ 37

?Tech, 2010-2-5

Page 2 of 38

1. 2.

Abstract

主要是分析一下android的Activity的架构;

Introduction

这是一个比较大的题目,所以我不太可能涉及太多的细节,多数是蜻蜓点水,浅尝辄止; 此文档分为以下几个部分: Activity的简单介绍

Activity的生命周期的介绍 Activity的各个状态的切换细节

3. Activity的简单介绍

什么是Activity?这个问题很难回答,直译为活动;Android提供的解释是: An activity is a single, focused thing that the user can do;

简单翻译一下就是,activity是用户可与之交互的独立的可以聚焦的东西;

它可以为用户提供的是一个简单的Window,用户可用于堆放自己想要的UI效果; Activity是一个线程或者进程吗?

Activity肯定会存在于某个进程,但是并不是每一个activity都对应于一个新的进程,多个activity可以在同一个进程里面,甚至多个应用还可以在同一个进程里面;当然可以设置不同的LaunchMode让一个activity起来的时候创建一个进程,但它本身肯定不是线程或者进程,但它通常是这个进程的主角;

Activity本身的执行逻辑是怎么样的?

这个就涉及activity最重要的生命周期的问题,后面会详细的解释,简单说从onCreate开始,到onDestory结束,但如果你通过打印信息来看的话,经常会发现onDestory似乎没被执行,更确切的说,你并不知道它什么时候一定会执行;

总结一下:

Activity是Android提供的应用程序架构,它规定了一个应用运行的框架,它的生老病死;负责它的基础设施的创建和销毁,以及各个activity之间的切换,状态管理等;

有了这些规定,每个应用开发者,不需要关心进程的创建,不需关心主循环,比如你不会在apk包里面看到main函数,你也不会在apk包里面看到有关主循环的东西,你也不需要关心你的程序如何被暂停,如何被关闭等等,只需要按照它规定的接口写,就万事俱备;这些接口也很简单,也就是onCreate,onStart,onResume,onPause,onResume,onRestart,onStop,onDestory,这些接口也不是都需要实现的,后面会再讲;

4. Activity的生命周期介绍

上面提到过,一个Activity有以下这些状态:

OnCreate,onStart,onResume,onPause,onResume,onRestart,onStop,onDestory,这些状态的切换,如下图所示:

?Tech, 2010-2-5 Page 3 of 38

OnCreate:表示这个activity已经被创建了,在这创建的当口,你需要做点什么,才不致浪费生命呢?比如这里就可以放置你直接设置好的UI通过setContentView(View),放入到显示框架里面,它和onDestory相对;

onStart:表示activity已经启动了,如果没什么特别要做的,可以不实现,它和onStop相对; onRestart:表示在Stop以后,但是没有被destory,这个activity再次被激活,那么将会走这个onRestart

?Tech, 2010-2-5

Page 4 of 38