android activity声明周期学习笔记
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声明周期学习笔记的更多相关文章
- Android(java)学习笔记227:服务(service)之服务的生命周期 与 两种启动服务的区别
1.之前我们在Android(java)学习笔记171:Service生命周期 (2015-08-18 10:56)说明过,可以回头看看: 2.Service 的两种启动方法和区别: (1)Servi ...
- Android(java)学习笔记170:服务(service)之服务的生命周期 与 两种启动服务的区别
1.之前我们在Android(java)学习笔记171:Service生命周期 (2015-08-18 10:56)说明过,可以回头看看: 2.Service 的两种启动方法和区别: (1)Servi ...
- Android(java)学习笔记219:开发一个多界面的应用程序之两种意图
1.两种意图: (1)显式意图: 在代码里面用intent设置要开启Activity的字节码.class文件: (2)隐式意图: Android(java)学习笔记218:开发一个多界面的应用程序之人 ...
- xamarin Android activity生命周期详解
学Xamarin我为什么要写这样一篇关于Android 的activity生命周期的文章 已经学Xamarin android有一段时间了,现在想起当初Xamarin也走了不少的弯路.当然Xamari ...
- Android(java)学习笔记162:开发一个多界面的应用程序之两种意图
1.两种意图: (1)显式意图: 在代码里面用intent设置要开启Activity的字节码.class文件: (2)隐式意图: Android(java)学习笔记218:开发一个多界面的应用程序之人 ...
- Android自动化测试之Monkeyrunner学习笔记(一)
Android自动化测试之Monkeyrunner学习笔记(一) 因项目需要,开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括Monkey.Monkeyr ...
- Android(java)学习笔记267:Android线程池形态
1. 线程池简介 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力. 假设一个服务器完成一项任务所需时间为:T1 创建线程时间, ...
- Android(java)学习笔记207:开源项目使用之gif view
1. 由于android没有自带的gif动画,我在Android(java)学习笔记198:Android下的帧动画(Drawable Animation) 播客中提到可以使用AnimationVie ...
- Android(java)学习笔记179:BroadcastReceiver之 有序广播和无序广播(BroadcastReceiver优先级)
之前我们在Android(java)学习笔记178中自定义的广播是无序广播,下面我们要了解一下有序广播: 1. 我们首先了解一下有序广播和无序广播区别和联系? (1) 有序广播> 接受者 ...
随机推荐
- 这篇 感觉很实用--DJANGO ORM
Django之model F/Q以及多对多操作 http://www.cnblogs.com/ccorz/p/5882400.html model之F/Q操作 F操作,使用查询条件的值 打个比方吧,有 ...
- css实现web前端最美的loading加载动画!
这些好看的loading效果,你还只会用第三方库吗?CSS3教你实现 前言 loading效果在实际开发中是很常见的,尤其是在Ajax请求的时候,可以给用户一个很好的交互体验. 今天这篇文章我们一起 ...
- js-禁止微信H5页面点击右上角菜单时出现“复制链接”,且分享仅支持微信分享
禁止微信H5页面点击右上角菜单时出现“复制链接”,这个问题已经影响到我很久很久了,起码有2年了, 昨天写H5活动的时候,需求有一个是:可分享,但是禁止复制活动链接, 这一下,就逼我务必好好研究研究了. ...
- 解析Java的volatile关键字
众所周知,无限制下多线程操作共享变量是危险的,为了保证线程安全语义,一般的建议是在操作共享变量时加锁,比方说在用synchronized关键字修饰的方法内读写共享变量. 但是synchronized开 ...
- mysql常用命令行操作
1.linux下彻底卸载mysql sudo rm /var/lib/mysql/ -Rsudo rm /etc/mysql/ -R sudo apt-get autoremove mysql* -- ...
- Doki Doki Literature Club
Doki Doki Literature Club! is a visual novel developed by Team Salvato. The protagonist is invited b ...
- viewport 测试以及总结
这里的总结的主要思想是ppk的文章(文末附有链接),加入了自己的总结,下面的测试用的是iphone5s,android是安卓5.5吋的手机,只是为了直观感受和方便解释拿了空出来的测试机给出的数据.详细 ...
- luogu P1577 切绳子
题目描述 有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的 绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位. 输入输出格式 输入格式: 第一行两个整数N和K,接下来N行,描 ...
- Bluetooth篇 开发实例之七 匹配&UUID
匹配和通信是两回事. 1.用过Android系统设置(Setting)的人都知道蓝牙搜索之后可以建立配对和解除配对,但是这两项功能的函数没有在SDK中给出.但是可以通过反射来获取. 知道这两个API的 ...
- Java中使用HttpRequest调用RESTfull的DELETE方法接口提示:How to fix HTTP method DELETE doesn't support output
说明:无论是Spring框架还是Spring Boot的Feign形式的客户端,以下的解决方法都适用. 解决方法:直接升级JDK 1.8,这个问题是1.7的BUG. 参考: https://sales ...