android生命周期图:

Activity继承了ApplicationContext;

1:初次加载activity时顺序执行:onCreate()-->onStart()-->onResume()

2:back键被按下之后会顺序执行:onPause()-->onStop()-->onDestroy()

3:home键被按下之后会顺序执行:应用程序并没有销毁,onPause()-->onStop()(比如需要切换另一个应用程序,特殊情况:当新的activity采用透明主题,那么当前activity不会回调onStop())

4:之后再次打开该应用程序,分别执行了onRestart()-->onStart()-->onResume()

当需要在通过home键来回切换应用程序,并且保留每个应用程序view的相关内容的时候,需要重写activity的onPause()和onRestart()方法,用来保存切换应用程序之前的内容和恢复内容。

其中看似类似的功能,onStart()&onStop  和  onResume()&onPause(),分别配对表示的意义不同而已, 前者从activity是否可见这个角度来回调的,后者从activity是否位于前台这个角度来回调的。。

当两个activity切换时,第一个activity先pause,第二个activity才启动。所以在onPause()&onStop()中尽量不做耗时操作,从而使得新的activity尽快显示并切换到前台。

activity启动:

Instrumentation(Binder)----->AMS 请求(activityStack) 通过activityThread----->同步activity状态

异常情况下的生命周期:

1:在资源相关的系统配置发生改变导致activity被kill并重新创建:

系统在activity异常终止的时候调用onSaveInstanceState和onRestoreInstanceState来存储和恢复数据,其它情况不会触发这个过程。

2:资源内存不足导致低优先级的activity被kill:

activity优先级:

--前台activity:正在和user交互,优先级最高;

--可见但非前台activity:比如activity中弹出了对话框,导致activity可见但是位于后台无法和用户直接交互;

--后台activity:已经被暂停的activity,比如执行了onstop(),优先级最低

如果一个进程中没有四大组件在执行,那么这个进程很快会被系统kill。

android activity声明周期学习笔记的更多相关文章

  1. Android(java)学习笔记227:服务(service)之服务的生命周期 与 两种启动服务的区别

    1.之前我们在Android(java)学习笔记171:Service生命周期 (2015-08-18 10:56)说明过,可以回头看看: 2.Service 的两种启动方法和区别: (1)Servi ...

  2. Android(java)学习笔记170:服务(service)之服务的生命周期 与 两种启动服务的区别

    1.之前我们在Android(java)学习笔记171:Service生命周期 (2015-08-18 10:56)说明过,可以回头看看: 2.Service 的两种启动方法和区别: (1)Servi ...

  3. Android(java)学习笔记219:开发一个多界面的应用程序之两种意图

    1.两种意图: (1)显式意图: 在代码里面用intent设置要开启Activity的字节码.class文件: (2)隐式意图: Android(java)学习笔记218:开发一个多界面的应用程序之人 ...

  4. xamarin Android activity生命周期详解

    学Xamarin我为什么要写这样一篇关于Android 的activity生命周期的文章 已经学Xamarin android有一段时间了,现在想起当初Xamarin也走了不少的弯路.当然Xamari ...

  5. Android(java)学习笔记162:开发一个多界面的应用程序之两种意图

    1.两种意图: (1)显式意图: 在代码里面用intent设置要开启Activity的字节码.class文件: (2)隐式意图: Android(java)学习笔记218:开发一个多界面的应用程序之人 ...

  6. Android自动化测试之Monkeyrunner学习笔记(一)

    Android自动化测试之Monkeyrunner学习笔记(一) 因项目需要,开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括Monkey.Monkeyr ...

  7. Android(java)学习笔记267:Android线程池形态

    1. 线程池简介  多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力.     假设一个服务器完成一项任务所需时间为:T1 创建线程时间, ...

  8. Android(java)学习笔记207:开源项目使用之gif view

    1. 由于android没有自带的gif动画,我在Android(java)学习笔记198:Android下的帧动画(Drawable Animation) 播客中提到可以使用AnimationVie ...

  9. Android(java)学习笔记179:BroadcastReceiver之 有序广播和无序广播(BroadcastReceiver优先级)

    之前我们在Android(java)学习笔记178中自定义的广播是无序广播,下面我们要了解一下有序广播:   1.   我们首先了解一下有序广播和无序广播区别和联系? (1) 有序广播> 接受者 ...

随机推荐

  1. BestCoder 2nd Anniversary的前两题

    Oracle Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Su ...

  2. hdu 3790(SPFA)

    最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  3. 【原创】BI解决方案选型之ETL数据整合工具对比

    一.背景 在企业BI平台建设过程中,数据整合始终是一切的基础,简单BI项目可以通过存储过程来实现,而复杂.全面.多方异构数据来源等就大大增加了复杂性,存储过程的可管理性.可维护性.容错性等就无法很好的 ...

  4. python全栈开发- day14列表推导式、生成器表达式、模块基础

    一.列表推导式 #1.示例 数据量小 egg_list=[] for i in range(10): egg_list.append('鸡蛋%s' %i) egg_list=['鸡蛋%s' %i fo ...

  5. 收纳箱1号 | GitHub Pages部署静态网页的一点私货

    Static site 总结各种各有的 static site generator Jekyll 其实是一个 static site generator. 如果你去 Google 这个,会发现有很多总 ...

  6. PHP开发环境配置系列(四)-XAMPP常用信息

    PHP开发环境配置系列(四)-XAMPP常用信息 博客分类: PHP开发环境配置系列 xamppphp 完成了前面三篇后(<PHP开发环境配置系列(一)-Apache无法启动(SSL冲突)> ...

  7. 解魔方的机器人攻略14 – 安装Lejos(下)

    由 动力老男孩 发表于 2009/12/27 17:16:11 第四步:安装Lejos 登陆 Lejos 主页点击 NXT 图片进入 Lejos 下载页面,点击 NXJ 的下载链接: 下载完成后将下载 ...

  8. 设计模式之组合模式(PHP实现)

    github地址:https://github.com/ZQCard/design_pattern /** 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作 ...

  9. [Erlang危机](4.1)作业控制模式

    原创文章,转载请注明出处:服务器非业余研究http://blog.csdn.net/erlib 作者Sunface 联系邮箱:cto@188.com Job Control Mode 作业控制模式 T ...

  10. ElasticSearch 集群健康

    1.介绍 一个 Elasticsearch 集群至少包括一个节点和一个索引.或者它 可能有一百个数据节点.三个单独的主节点,以及一小打客户端节点——这些共同操作一千个索引(以及上万个分片). 不管集群 ...