Android有四种Activity的LaunchMode分别为standard、singleTop、singleInstance、singleTask,大概的应用场景如下:
1、standard,默认的启动模式
2、singleTop,适用于从通知栏进入的界面,比如推送,使用singleTop启动的界面当当前activity位于栈顶的时候系统就不会调用onCreate方法新建activity,而是走栈顶activity的onNewIntent方法,自己也可以startActivity的时候从本activity跳转到本activity,看看走的是不是onNewIntent方法
3、singleTask方法,适用于程序的入口,比如浏览器的主页面,只启动主页面一次,其他调用onNewIntent方法。举个栗子:有三个界面,oneActivity、twoActivity、ThreeActivity,其中ThreeActivity的启动模式设置为singleTask,我们这么调转oneActivity----->twoActivity------->ThreeActivity------->oneActivity-------->twoActivity--------->ThreeActivity,你会发现,第二次调转到ThreeActivity的时候不会走ThreeActivity的oncreate方法,而是走onNewIntent方法,并且在新栈中位于第一个ThreeActivity上的oneActivity和twoActivity都会被销毁
4、singleInstance方法,适用于与程序分离的界面,比如闹钟,与singleTask类似,区别在于singleTask允许其他activity进驻到新栈中而singleInstance不允许其他activity进驻到新栈中,新栈中只允许有一个activity
PS:启动activity时还有个比较常用的FLAG是FLAG_ACTIVITY_CLEAR_TOP,这个会清除栈中位于这个activity上的其他activity,这个会重新走activity的onCreate方法,注意不要与singleTop混淆