Android面试题总结。
Activity 启动模式详解
activity有四种启动模式,分别为standard,singleTop,singleTask,singleInstance。如果要使用这四种启动模式,必须在manifest文件中
standard
标准启动模式,也是activity的默认启动模式。
在这种模式下启动的activity可以被多次实例化,即在同一个任务中可以存在多个activity的实例,每个实例都会处理一个Intent对象。
如果Activity A的启动模式为standard,并且A已经启动,在A中再次启动Activity A,即调用startActivity(new Intent(this,A.class)),会在A的上面再次启动一个A的实例,即当前的桟中的状态为A–>A。
singleTop
如果启动的activity已经位于栈顶,那么就不会重新创建一个新的activity实例,而是复用位于栈顶的activity实例对象。
如果不位于栈顶仍旧会重新创建activity的实例对象。
singleTask
设置了singleTask启动模式的activity在启动时,如果位于activity栈中,就会复用该activity,这样的话,在该实例之上的所有activity都依次进行出栈操作,即执行对应的onDestroy()方法,直到当前要启动的activity位于栈顶。
singleInstance
如果使用singleInstance启动模式的activity在启动的时候会复用已经存在的activity实例。
不管这个activity的实例是位于哪一个应用当中,都会共享已经启动的activity的实例对象。使用了singlestance的启动模式的activity会单独的开启一个共享栈,这个栈中只存在当前的activity实例对象。
onRestart的调用场景
1、点击home键后,再切换回来
2、跳转到其他Activity,再点击返回按钮
3、从本应用切换到其他应用,再切换回来
Activity跳转生命周期
1、启动 A:onCreate() ——> onStart() ——> onResume()
2、A 跳转到 B,[A]onPause() ——> [B]onCreate() ——> [B]onStart() ——> [B]onResume() ——> [A]onStop()
3、B 返回 A,[B]onPause() ——> [A]onRestart() ——> [A]onStart() ——> [A]onResume() ——> [B]onStop() ——> [B]onDestroy()