很多时候在面试过程中或者在日常的开发过程中,大多数都会涉及到activity的启动模式.activity的启动模式一共有四种:standard(标准模式),singletop(栈顶复用模式),singletask(栈内复用模式),sinlginstance(唯一实例模式).
1.standard.标准模式 activity的默认模式就是standard模式.在这个模式下,当我们启动一个activity时,就会创建一个activity当实例并放入任务栈中.如果我们多次启动同一个activity当话,就会重复创建这个activity当实例.这样会造成内存空间当占用.
2.singletop.栈顶复用模式.故名思义,只有位于任务栈顶的activity实例才能复用.如果当activity 实例A被启动时.如果实例A已经位于任务栈当栈顶,则直接启动位于栈顶实例A,不需要创建.如果实例A不是位于栈顶或者不存在于任务栈内,则需要重新创建.即只有位于任务栈栈顶顶实例被调用时候才不会创建.其他时候都需要创建.
3.singletask.栈内复用模式.同一栈内实例可以复用.只要任务栈中存在被启动的activity实例,则不会创建新的实例.假如启动实例A,系统会先查找有没有可以存放实例A的任务栈,如果没有则创建任务栈.如果有任务栈,则在任务栈内查找是否存在实例A,如果有则将实例A调到栈顶,如果没有则创建新的实例A.
如果任务栈内存在启动的Activity实例,若实例位于栈顶,则直接启动,若实例没有位于栈顶,则先将实例上面的实例清空出栈,再将实例调到栈顶启动.
4.singleinstance.唯一实例模式,即 每一个实例单独存在,位于独立的栈内存放.如果启动实例A,则会为A单独创建一个任务栈,并将A存放于任务栈内.每一个实例都是唯一单独存在的于独立的栈内.