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. AC日记——可能的路径 51nod 1247

    可能的路径 思路: 看到题目想到gcd: 仔细一看是更相减损: 而gcd是更相减损的优化版: 所以,对于每组数据判断gcd是否相等就好: 来,上代码: #include <cstdio> ...

  2. IIS——MIME介绍与添加MIME类型

    MIME(MultipurposeInternet Mail Extensions)多用途互联网邮件扩展类型.是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会 ...

  3. 数学【P2524】 Uim的情人节礼物·其之弐 (康托展开)

    因为某人@ZAGER挖坑让我讲一下康托展开,所以发现了这个题,顺便说一下康托展开是个什么东西 题目概括 给定n与一个数列,要求求出给定数列在n的全排列中的排名(按照字典序从小到大排列) 康托展开 先放 ...

  4. 分享Kali Linux 2017年第24周镜像文件

     分享Kali Linux 2017年第24周镜像文件  Kali Linux官方于6月11日发布2017年的第24周镜像.这次维持了11个镜像文件的规模.默认的Gnome桌面的4个镜像,E17.KD ...

  5. POJ1226 Substrings(二分+后缀数组)

    题意:给n个字符串,求最长的子串,满足它或它的逆置出现在所有的n个字符串中. 把n个字符串及其它们的逆置拼接,中间用不同字符隔开,并记录suffix(i)是属于哪个字符串的: 跑后缀数组计算heigh ...

  6. Android入门之文件系统操作

    Android入门之文件系统操作(二)文件操作相关指令 (转)   (一)获取总根 File[] fileList=File.listRoots(); //返回fileList.length为1 // ...

  7. FIREDAC驱动MYSQL数据库

    FIREDAC驱动MYSQL数据库 FIREDAC连接MYSQL数据库需要用到LIBMYSQL.DLL这个动态库. 这个LIBMYSQL.DLL分为32位和64位两个不同的版本,对应32位或64位的M ...

  8. javascript 对象属性的添加,删除,json对象和字符串转换方法等

    1:动态添加 对象属性 var obj = new Object(); console.log (obj.username); obj.username = "haha"; con ...

  9. ios--计时器演示样例:一闪一闪亮晶晶(动画)

    本演示样例实现的动画:UIView定时消失随后又闪现,即一闪一闪的动画 所採用的技术:定时器(NSTimer) + 动画(beginAnimations/commitAnimations) 详细实现步 ...

  10. yarn 查看任务信息

    一.在命令行使用命令查看 (1)查看日志:yarn logs -applicationId application_1469094096026_26612 (2)查看状态:yarn applicait ...