(▽)经常发现学着学着,由于学习的东西越来越多,接触的东西越来越多,逐渐的吧自己的最基础的东西忘得差不多了(o(╥﹏╥)o我也差不多忘了很多东西了)
发现越优秀的人 越注重细节,基础更加扎实和巩固
分享一下自己整理的面试学习路线
请查看完整的PDF版
更多完整项目下载。未完待续。源码。图文知识后续上传github。
可以点击关于我联系我获取
一.Activity 是什么?
Activity 实际上只是一个与用户交互的接口而已
二.Activity 生命周期
2.1 Activity 的 4 种状态
Active/Paused/Stopped/Killed
Activie: 当前 Activity 正处于运行状态,指的是当前 Activity 获取了焦点。
Paused: 当前 Activity 正处于暂停状态,指的是当前 Activity 失去焦点,此时的 Activity并没有被销毁,内存里面的成员变量,状态信息等仍然存在,当然这个 Activity 也仍然可见,但是焦点却不在它身上,比如被一个对话框形式的 Activity 获取了焦点,或者被一个透明的 Activity 获取了焦点,这都能导致当前的 Activity 处于 paused 状态。
Stopped: 与 paused 状态相似,stopped 状态的 Activity 是完全不可见的,但是内存里面的成员变量,状态信息等仍然存在,但是也没有被销毁。
Killed: 已经被销毁的 Activity 才处于 killed 状态,它的内存里面的成员变量,状态信息等都会被一并回收。
2.2 Activity 的生命周期分析
正常情况下的生命周期:
Activity 启动
–>onCreate()
–>onStart()
–>onResume()
点击 home 键回到桌面–>onPause()
–>onStop()
再次回到原 Activity
–>onRestart()
–>onStart()
–>onResume()
退出当前 Activity
时–>onPause()
–>onStop()
–>onDestroy()
详细生命周期如下:
1.启动了一个 Activity,通常是 Intent 来完成。启动一个 Activity 首先要执行的回调函数是onCreate()
,通常在代码中你需要在此函数中绑定布局,绑定控件,初始化数据等做一些初始化的工作。
2.即将执行 Activity 的 onStart()
函数,执行之后 Activity 已经可见,但是还没有出现在前台,无法与用户进行交互。这个时候通常 Activity 已经在后台准备好了,但是就差执行onResume()
函数出现在前台。
3.即将执行 Activity 的 onResume()
函数,执行之后 Activity 不止可见而且还会出现在前台,可以与用户进行交互啦。
4.由于 Activity 执行了 onResume()
函数,所以 Activity 出现在了前台。也就是 Activity处于运行状态。
5.处于运行状态的 Activity 即将执行 onPause()
函数,什么情况下促使 Activity 执行onPause()
方法呢?
- 启动了一个新的 Activity
- 返回上一个 Activity
可以理解为当需要其他 Activity,当前的 Activity 必须先把手头的工作暂停下来,再来把当前的界面空间交给下一个需要界面的Activity,而 onPause()
方法可以看作是一个转接工作的过程,因为屏幕空间只有那么一个,每次只允许一个 Activity 出现在前台进行工作。通常情况下 onPause()函数不会被单独执行,执行完 onPause()方法后会继续执行onStop()
方法,执行完 onStop()
方法才真正意味着当前的 Activity 已经退出前台,存在于后台。
6.Activity 即将执行 onStop()
函数,在“5”中已经说得很清楚了,当 Activity 要从前台切换至后台的时候会执行,比如:用户点击了返回键,或者用户切换至其他 Activity 等
7.当前的 Activity 即将执行 onDestory()
函数,代表着这个 Activity 即将进入生命的终结点,这是 Activity 生命周期中的最后一次回调生命周期,我们可以在onDestory()
函数中,进行一些回收工作和资源的释放工作,比如:广播接收器的注销工作等。
8.执行完 onDestory()
方法的 Activity 接下来面对的是被 GC
回收,宣告生命终结
9.很少情况下 Activity 才走“9”,网上一些关于对话框弹出后 Activity 会走“9”的说法,经过笔者验证,在某个 Activity 内弹出对话框并没有走“9”,所以网上大部分这样说法的文章要么是没验证,要么直接转载的,这个例子说明,实验出真知,好了,不废话了,那么什么情况下,Activity 会走“9”呢?
10.当用户在其他的 Activity 或者桌面回切到这个 Activity 时