Activity的生命之路
activity的生命周期这张图是最经典的了,下面我就说一下 这张图的脉络:
第一条线我们这么走
onCreate→onStart→onResume→onPause→onStop→onDestroy
这条线路是这个activity走的最正常的一条路,说的就是一个activity的建立到退出的全过程。
接下来这个图的几个分支:
onCreate→onStart→onResume→onPause→onStop→onRestart→onStart...
这条路是一个循环,我具体说下这个是遇到了什么情况才产生的现象,这个是当你开启一个activity时,这时通过点击该activity里的按钮或是其他事件启动了另一个activity,这时我们就假设之前的activity是甲,现在正启动的activity是乙,乙不可能一下子就能启动起来,他需要整合一些资源,就在这个时候,甲调用了onPause的方法,是自己停了下来,这个很可能是怕用户在这个期间再触发其他事件导致会产生一些问题,所以甲停了下来,然后乙准备好了,调用onCreate方法,接下来调用onStart方法,然后是onResume方法,等这一切都完事了,甲才调用onStop方法,接下来如果乙运行完毕,按了返回按钮,这个时候乙就会调用onPause方法,然后甲可以恢复了,甲调用onRestart方法,然后紧接着是onStart方法,甲调完之后,乙调用onStop方法,接下来是乙的onDestroy方法,这个周期就结束了,这个完事了之后不知道你有没有发现,一旦是遇到什么情况,当前的activity首先要做的就是onPause方法,接下来就是等待,等待对方初始化完毕,然后就继续接下来的内容,就有点像一个人再干一件事情,正干着呢,他的朋友突然来了,说你歇会吧,然后他就先停下,但只是放下了手头上的工作,但并没有离开,当朋友把准备工作做完之后,他就下去换上他的朋友,这对所有的窗体都好用吗,并不是,这里要纠正一点,Dialog这个特殊的类型,他与activity没有什么关系,他更像是一个View的组件,如果他出现挡住了一个activity,那这个activity将不理他,什么也不处理,该干啥继续干啥,所以有些人说onPause方法是用来使activity失去焦点的这句话并不完全准确,因为当dialog出现,activity同样会失去焦点,但是他并没有回调onPause函数。
下面这条路:
onCreate→onStart→onResume→onPause→onResume...
这依旧是一条循环,这个和前面说的那个dialog遇到的情况有些像,只不过这次的不是普通的弹出dialog挡住的界面,而是一个基于activity的主题对话框,实际上对话框大致来说应该分两种,一个是弹出对话框,就是刚刚说的那个,现在要说的刚好是另一个,是主题对话框,主题对话框是基于activity的,所以,当一个activity甲正在运行的时候,通过某些事件产生了一个主题对话框,这个时候,activity会立刻调用onPause,接下来,这个对话框出现了,然而后边的activity并不会调用onStop,因为主题对话框虽然基于activity,但是它并不能占据整个屏幕,所以后边的activity还是有露出来的一部分的,所以activity值调用onPause,当按返回键的时候,那个主题对话框没了,然后activity会调用到onResume函数,回到之前的状态。
下面:
onCreate→onStart→onResume→onPause→onStop→onCreate...
同样也可能是
onCreate→onStart→onResume→onPause→onStop→onDestroy→onCreate...
这两种情况是差不多的,可以打个比方,当一个activity处于onResume的时候,这时按了home键,我们知道,他接下来会调用onPause,onStop方法,这时我们将进程杀掉,再通过home回来,会发现该activity又重新调用了onCreate方法,同理,当一个activity处于onResume的时候,这时用返回键一次一次的退出,最后将程序完全退出,这个时候activity就会调用到onDestroy方法了,这个时候如果突然将进程杀死,然后再回来,会发现activity还是从onCreate调起的。
好了,以上是我对activity的一路走来的理解,网上的介绍很多,这是我个人的理解,希望大家多多给予意见如果哪里有争议,麻烦提出来。
Activity的生命之路的更多相关文章
- Android开发学习之路--Activity之生命周期
其实这篇文章应该要在介绍Activity的时候写的,不过那个时候还不怎么熟悉Activity,还是在这里详细介绍下好了.还是参考下官方文档的图吧: 从上面的流程,我们可以看出首先就是打开APP,开始执 ...
- Android开发艺术探索笔记——第一章:Activity的生命周期和启动模式
Android开发艺术探索笔记--第一章:Activity的生命周期和启动模式 怀着无比崇敬的心情翻开了这本书,路漫漫其修远兮,程序人生,为自己加油! 一.序 作为这本书的第一章,主席还是把Activ ...
- Android开发之Activity的生命周期以及加载模式
本篇博客就来好好的搞一下Activity的生命周期,如果搞过iOS的小伙伴的话,Activity的生命周期和iOS中ViewController的生命周期非常类似.生命周期,并不难理解.一个人的生命周 ...
- Activity的生命周期
Activity的生命周期 以往我们实现页面间的跳转都是实例化Intent类的对象,但是页面在我们眼前的出现与消失没有我们所看到的那么简单,它有一个复杂的生命周期,一个页面的出现,被覆盖,再次出现,被 ...
- 浅谈Android中Activity的生命周期
引言 我想对于Android开发人员来说,Activity是再熟悉不过了,今天我们就来探讨下Activity的生命周期.熟悉的掌握Activity对于开发健壮的Android应用程序来说至关重要.下面 ...
- 关于activity的生命周期的随笔
在activity的生命周期中,我总是容易混淆,onstart和on resume ,on pause和onstop 原来这个都是一对的. onstart 对应 onstop ,意义在于使页面显示出来 ...
- 每天一点Android干货-Activity的生命周期
Activity Activity是这样一个程序组件,它为用户提供一个用于任务交互的画面. 一个应用程序通常由多个activity组成,它们彼此保持弱的绑定状态.典型的,当一个activity在一个应 ...
- Android中Activity的生命周期
简介: 这个基本是必问的问题了,说一下你对Activity生命周期的理解,呵呵… onCreate, onStart, onResume, onPause, onStop, onDestroy, on ...
- Android Activity的生命周期简单总结
Android Activity的生命周期简单总结 这里的内容参考官方的文档,这篇文章的目的不是去总结Activity是如何启动,如何创造,以及暂停和销毁的,而是从实际开发中分析在Activity各个 ...
随机推荐
- 【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
GitHub操作总结 : 总结看不明白就看下面的详细讲解. . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details ...
- RabbitMQ 队列
http://blog.chinaunix.net/uid/22312037/sid-163962-abstract-1.html http://bobo896.blog.163.com/blog/# ...
- ITU-T Technical Paper: 测量QoS的基本网络模型
本文翻译自ITU-T的Technical Paper:<How to increase QoS/QoE of IP-based platform(s) to regionally agreed ...
- 避免"Physics Space Locked"错误
在一些cocos2d中使用物理引擎的代码中,往往会出现如下错误: Aborting due to Chipmunk error: You cannot manually reindex objects ...
- LeetCode之“动态规划”:Unique Binary Search Trees && Unique Binary Search Trees II
1. Unique Binary Search Trees 题目链接 题目要求: Given n, how many structurally unique BST's (binary search ...
- Ubuntu14.04安装androidStudio错误解除
错误1 ubuntu androidStudio :app:mergeDebugResources FAILED 办法: sudo dpkg --add-architecture i386 sudo ...
- javascript内置对象速查(一)
字符串对象 var str = new String("Hello World"); 可以调用其中的一些方法: str.length str.big 日期对象 var dt = n ...
- https认证
HTTPS认证 说明 1. HTTPS协议的站点信息更加安全,同时可降低网站被劫持的风险,如网站同时存在HTTP和HTTPS站点,可使用本工具进行认证,便于百度搜索识别网站HTTP与HTTPS之间的对 ...
- 一种WPF在后台线程更新UI界面的简便方法
WPF框架规定只有UI线程(主线程)可以更新界面,所有其他后台线程无法直接更新界面.幸好,WPF提供的SynchronizationContext类以及C#的Lambda表达式提供了一种方便的解决方法 ...
- svn 不能添加.a文件
1.打开终端输入 open ~/.subversion/ 2.双击打开config文件 3.修改如下两行 # global-ignores = *.o *.lo *.la *.al .libs ...