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各个 ...
随机推荐
- UML之构件图
构件图,英文名曰:Component Diagrams用于描述一组构件之间的组织和依赖关系,用于建模系统的静态实现视图,构件可以是可执行程序.库.表.文件和文档等,她包含了逻辑类或者逻辑类的实现信息, ...
- 操作系统 - unix和windows下进程异同
在UNIX系统中,只有一个系统调用可以用来创建新进程:fork.这个系统调用会创建一个与调用进程相同的副本.在调用了fork之后,这两个进程(父进程和子进程)拥有相同的存储映像.同样的环境字符串和同样 ...
- Android UI技巧(一)——Android中伸缩自如的9patch图片切法,没有美工自给自足
Android UI技巧(一)--Android中伸缩自如的点9图片切法,没有美工自给自足 相信大家对.9 图片应该都很熟悉吧,有些人可能自己都会了,此篇献给那些不会的同学,咱们一起来聊聊.9图片的切 ...
- Gradle 1.12用户指南翻译——第四十二章. Announce插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- 【Android 应用开发】Activity生命周期 与 Activity 之间的通信
一. Activity生命周期 上图 1. Activity状态 激活状态 : Activity出于前台 , 栈顶位置; 暂停状态 : 失去了焦点 , 但是用户仍然可以看到 , 比如弹出一个对话框 , ...
- cookie的增删改查函数
function setCookie(name,value,expires,path,domain){ //设置过期时间 var oDate = new Date(); oDate.setDate(o ...
- Spring Cloud入门教程-Ribbon实现客户端负载均衡
简介 我们继续以之前博客的代码为基础,增加Ribbon组件来提供客户端负载均衡.负载均衡是实现高并发.高性能.可伸缩服务的重要组成部分,它可以把请求分散到一个集群中不同的服务器中,以减轻每个服务器的负 ...
- Event 对象
哪个鼠标按钮被点击? <html> <head> <script type="text/javascript"> function whichB ...
- Python中的函数与变量
本节内容 函数的定义方法 函数功能 函数的返回值 函数的形参与实参 全局变量与局部变量 递归 函数的作用域 匿名函数lambda 函数式编程 常用内置函数 其他内置函数 函数 函数的定义方法 函数就相 ...
- 【转载】解决nginx负载均衡的session共享问题
https://blog.csdn.net/u012081441/article/details/71787164 之前有写过ubuntu环境下搭建nginx环境,今天来谈一下nginx sessio ...