Activity
首先想介绍一下Android Framework概念和我们所学的APP 开发的关系:
做上层APP开发的时候,我们写的app都不是一个完成的程序,我们写的只是一个套件组,就是一堆Activity,Service等等的组件。Framework里面提供的是接口(或者理解为Activity抽象类),我们重写的Activity就相当于对于接口的实现。Activity的整个生命周期都由Framework框架来掌控,点击桌面图标,由FrameWork框架捕获这个事件,去找这个图标对应的App的Manifest里面找到要启动的第一个Activity,就是那个在Manifest里注明是main和luncher的。然后由Framework框架new出这个myActivity对象。自然也就new出了基类Activity对象,然后Framework框架调用Activity的onCreate(),实际对象是myActivity,执行的也就是myActivity的onCreate()。这时候App就启动了。
Activity 作为Android四大组件的大哥大,有自己的脾气。开发Activity的时候,就是在实现他的回调函数。
Activity 生命周期
Activity 有四种活动状态:1.运行状态 2.暂停状态 3.停止状态 4.销毁状态
暂停状态和停止状态都是活动不处于活动返回栈(Activity的管理栈名称)的栈顶,但是暂停状态是活动依然部分可见,停止状态是完全不可见。
Activity 生命周期7个回调方法:
1.onCreate()
2.onStart()
3.onResume()
4.onPause()
5.onStop()
6.onDestroy()
7.onRestart()
三种生存期:
生命周期面试题:
从一个activity启动另外一个activity的时候,说明两个activity各自执行的生命周期
首先是第一个activity的启动,按照正常一般的生命周期流程经过了onCreate,onStart,onResume:
然后通过按键点击来启动第二个activity,这里有一个要注意的地方,也就是这个问题的考点:第一个activity先进行了onPause,然后AMS调用第二个activity的onCreate,onStart,onResume,然后第一个activity才继续进行onStop操作。
然后按back键返回第一个activity,同理第二个activity先进行onPause,等到第一个activity进行完onRestart,onStart,onResume的操作后,第二个activity才进行onStop,onDestroy操作。
最后就是一般操作,退出application,第一个activity进入onPause,onStop,onDestroy.
四种启动模式:
1.standard
2.singleTop
如果启动活动的时候发现返回栈的栈顶已经是要启动的活动,就直接使用它,不另外新建
3.singleTask
在整个应用程序的上下文中只有一个活动实例
4.singleInstance
指定为singleInstance的活动会启动一个新的返回栈来管理这个活动,与其他活动不共用一个返回栈