Activity基础知识及相关面试题
1:Activity的四种状态
①:running:activity处于活动状态,用户可以点击、滑动,activity做出响应。(处于栈顶的状态)
②:paused:activity失去焦点,或者activity被一个非全屏的activity覆盖,或者被一个透明的activity占据、覆盖。
这时候activity只是失去了与用户交互的能力,但是成员变量和状态信息都还在,并没有销毁(如果内存紧张的 话,就会被回收)。
③:stopped:activity被另外一个activity完全覆盖掉的时候,activity不可见了。被覆盖的activity会处于stopped的状态。 跟paused状态一样,这个时候activity的成员变量跟状态信息都还在,如果内存紧张的话,会被回收掉。
④:killed:activity被系统回收掉了,成员变量跟状态信息肯定都不复存在了。
2:Activity的生命周期
activity启动:-->oncreate():activity创建的时候做的回调,被调用的第一个方法。可以设置布局文件、图片的预加载等。
-->onstart():表示activity正在启动,用户可见的状态,但是无法触摸。
-->onresume():activity可见了,用户可以点击、触摸、滑动等操作。
点击HOME键回到手机桌面的时候:
-->onpause():activity是可见的,但是不可触摸。
-->onstop():activity不可见,不可以操作,如果手机内存紧张会被系统回收。
再次回到activity的时候:
-->onrestart():activity重启的时候做的回调。
-->onstart():表示activity正在启动,用户可见的状态,但是无法触摸。
-->onresume():activity可见了,用户可以点击、触摸、滑动等操作。
退出当前activity的时候:
-->onpause():activity是可见的,但是不可触摸。
-->onstop():activity不可见,不可以操作,如果手机内存紧张会被系统回收。
-->ondestory()activity正在被回收,我们可以在这里做一些回收工作,或者一些资源的释放工作。
3:Android中的进程优先级。
前台/ 可见/ 服务/ 后台/ 空
前台:与用户交互的进程。
可见:可见但是没有处于前台,并没有展示在用户面前的进程。
服务:save服务。。
后台:当我们按下HOME键的时候,前台进程也就变成了后台进程,当然如果手机内存紧张,后台会被回收。
空进程:不属于以上四种进程的进程。空进程表示没有活跃的组件,只是为了缓存作用保留的进程。
4:Android任务栈
先进后出的原则。
任务栈保存了activity的状态,也保存了activity的信息。
任务栈不是唯一的。()
5:activity的启动模式
①:standard:默认标准模式。每次启动一个activity都会又一次创建一个新的实例放入栈,无论这个实例是否 存在。
②:singletop:分两种处理情况:须要创建的Activity已经处于栈顶时,此时会直接复用栈顶的activity。不会 再创建新的activity;若需要创建Activity不处于栈顶,此时会又一次创建一个新的Activity放 入栈。同Standard模式一样
③:singletask:若须要创建的Activity已经处于栈中时,此时不会创建新的Activity,而是将栈中的Activity上面的其他Activity所有销毁,使它成为栈顶。
④:singleinstance:全局单例模式。整个系统当中有且只有一个activity实例,那么这个activity独享一个栈。 这个经常使用于系统中的应用,比如Launch、锁屏键的应用等等,整个系统中仅仅有一 个!所以在我们的应用中一般不会用到。了解就可以。