http://www.cnblogs.com/csonezp/p/5121142.html

新买了一本书,《Android开发艺术探索》。这本书算是一本进阶书籍,适合有一定安卓开发基础,做过一两年安卓开发,但是又不是特别精通的开发者。感觉还不错。准备写写博客记录一下读书所得,增强一下记忆。

说到Activity生命周期,那不得不上一个图,基本上看完这个图,就能对生命周期有一个整体的认识。

我这里就总结一下各种情况下Activity生命周期的调用情况。

1,正常打开单个Activity,然后退出应用:

这种情况是最普通的状况,Activity的生命周期会按照上图从上到下的方式走。即:onCreate --> onStart --> onResume --> 运行--> 按返回键结束程序--> onPause-->onStop-->onDestory

2,打开一个Activity A,然后再打开另一个Activity B

对于A:

onCreate --> onStart --> onResume --> A运行 --> A发出打开B的Intent --> onPause-->B可见-->onStop

此时,会打开B,B同样会经历一个完整的Activity生命周期。等B结束,A再度可见的时候,A会经历:

onRestart-->onStart-->onResume

注意,B这个Activity是在A的onPause执行后才变成可见状态的,所以为了不影响B的显示,最好不要在onPause里执行一些耗时操作,可以考虑将这些操作放到onStop里,这时B已经可见了。

3,优先级低的Activity被系统回收

Activity优先级从高到低大致有三种:

1),前台Activity。可见的前台Activity优先级最高

2),可见,但非前台的Activity。例如弹出了一个对话框,Activity可见,但是不可与用户交互。此类别优先级低一些。

3),后台Activity。这个就是不可见的Activity。

系统资源不足时,会优先回收优先级低的Activity。这个时候被结束的Activity,并不会像正常的Activity一样,在销毁的时候会走onPause,onStop,onDestory这样的生命周期,而是会多一个onSaveInstanceState的方法来保存一些数据。这个方法会在onStop前调用,但是不确定是在onPause之前还是之后。Activity重建的时候,这个方法中所保存的数据会以Bundle的形式作为参数传递给onCreate,所以我们可以用参数来判断这个Activity是新建的还是重建的,如果是重建的,则可以从Bundle中取出数据来恢复界面。

Android开发艺术探索读书笔记——01 Activity的生命周期的更多相关文章

  1. Android开发艺术探索(一)——Activity的生命周期和启动模式

    Activity的生命周期和启动模式 生命周期有? 1.典型情况下的生命周期—>指有用户参与的情况下,Activity所经过的生命周期改变 2.异常情况下的生命周期—>指Activity被 ...

  2. android开发艺术探索学习 之 结合Activity的生命周期了解Activity的LaunchMode

    转载请标明出处: http://blog.csdn.net/lxk_1993/article/details/50749728 本文出自:[lxk_1993的博客]: 首先还是先介绍下Activity ...

  3. Android开发艺术探索读书笔记——进程间通信

    1. 多进程使用场景 1) 应用某些模块由于特殊需求须要执行在单独进程中. 如消息推送,使消息推送进程与应用进程能单独存活,消息推送进程不会由于应用程序进程crash而受影响. 2) 为加大一个应用可 ...

  4. android开发艺术探索读书笔记之-------view的事件分发机制

    View的点击事件的分发,其实就是对MotionEvent事件的分发过程,即当一个MotionEvent产生后,系统需要把这个事件传递给一个具体的View,而这个过程就是分发过程. 分发过程主要由以下 ...

  5. Android开发艺术探索学习笔记(一)

    第一章 Activity的生命周期和启动模式 1.1Activity的生命周期全面解析 1.1.1典型情况下的生命周期分析 (1)在两个Activity进行切换时,当前的Activity的onPaus ...

  6. 《Android开发艺术探索》读书笔记之Activity的生命周期

    两种不同情况下的Activity生命周期 (1)典型情况下的生命周期 指在有用户参与的情况下,Activity所经过的生命周期的改变. (2)异常情况下的生命周期 指Activity被系统回收或者由于 ...

  7. Android开发艺术探索学习笔记(三)

    第三章  View的事件体系 3.1 View基础知识 3.1.1 什么是view View 是Android中所有控件的基类,是一种界面层的控件的一种抽象,它代表了一个控件. 3.1.2 View的 ...

  8. Android开发艺术探索学习笔记(四)

    第四章 View的工作原理 4.1初识ViewRoot和DecorView ViewRoot是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成 ...

  9. Android开发艺术探索学习笔记(十一)

    第十一章  Android的线程和线程池 从用途上来说,线程分为子线程和主线程,主线程主要处理和界面相关的事情,而子线程往往用于执行耗时的操作.AsyncTask,IntentService,Hand ...

随机推荐

  1. stash存储

    比如我的fsm_ngh分支,被a修改了,可是我本地还有没有提交的东西,就不能切换分支也不能下拉,也不能直接上传,否则分支会混乱. 这个时候stash的优点来了,先把你修改的暂存隐藏起来,然后pull远 ...

  2. 递归算法(二)——前缀转后缀

    源码:pretopost.cpp #include "stdafx.h" #include <stdio.h> #include <stack> /**** ...

  3. C#多线程 线程池

    实例1:直接看看微软提供的代码 using System; using System.Threading; public class Example { public static void Main ...

  4. 源代码tfs to git

    TFSàgit可以保留完整历史记录,方法: https://github.com/git-tfs/git-tfs 系统变量的path里加上: ;C:\Program Files (x86)\Git\b ...

  5. WCF服务开发与调用的完整示例

    WCF服务开发与调用的完整示例 开发工具:VS2008 开发语言:C# 开发内容:简单的权限管理系统 第一步.建立WCF服务库 点击确定,将建立一个WCF 服务库示例程序,自动生成一个包括IServi ...

  6. jQueryUI之交互

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. this面试题

    // 考题1 /*function Fn() { console.log(this);//window } Fn(); new Fn();//Fn实例 Fn.apply(Fn); //将this指向F ...

  8. 如何利用Cloudera Manager来手动安装parcel包

    1.问题的描述: 当你利用Cloudera Manager部署了CDH的集群后,也许随着你的业务需求,你需要对你的就去哪做一些优化,或者扩展之类的,这个时候你可能需要下载安装一些组件.例如,我最近在阅 ...

  9. 【three.js详解之二】渲染器篇

    [three.js详解之二]渲染器篇   本篇文章将详细讲解three.js中渲染器(renderer)的设置方法. three.js文档中渲染器的分支如下: Renderers CanvasRend ...

  10. Windows Server 2008(R2)配置apache+php+mysql环境问题事项

    服务器环境:Windows 2008 R2 64位.apache,mysql,php都是32位. 1. 80端口的外网访问问题 表现:80端口本地可以访问,外网不能访问,换了8080端口也是一样,检查 ...