Activity的四种启动模式

standard 默认的模式

就是那种你可以一直创建他的实例例如你创建了Activity a之后再startActivity a,还是会创建一个一模一样的,就和平常的使用一个样子

singleTop

这种模式是 在创建了Activlty a 之后再创建Activity a的时候 就不会创建成功,而是会调用你第一个创建的Activyt a里面的getNewIntent方法。。。但是要注意的是你的Activity a这时候在栈顶的时候再创建Activity a才会不重复创建,在栈顶的意思就是你当前这个页面就是Activity a,如果你在a的时候 startActivity了 Activity b,之后再创建Activiyt a是不会调用Activity a的getNewIntent方法的,因为他此时不会处于栈顶

singleTask

就是创建了Activitiy a,之后又创建了b c d,当在d的时候再创建a,会把中间的b c都finish了。。意思就是这个栈中该Activity的实例只能存在一个,并且会将中间的都清空,并且调用自身的getNewIntent方法,如果是Activity a创建了Activity a 则只会调用自己的getNewIntent。 适用的场景:当你要创建一个东西(页面0),比如第一个页面要选择时间,第二个页面要选择地点,第三个页面选择费用,在第三个页面选择完成后,要把 1 2 3 页面拿到的东西回传给页面0,有两种方式,一种就是startActivityForRsult,但是每个页面都要加一次。。这样子感觉比较复杂,这时候只要将创建东西的页面改为singleTask就能完美解决这个问题。。。

singleInstance

如果应用1的任务栈中创建了MainActivity实例,如果应用2也要激活MainActivity,则不需要创建,两应用共享该Activity实例;
大概就是比如来了通知,要打开Activity a,之后另外一个应用也要打开Activity a这样子会进入到两个不同的栈中,设置他的属性为singleInstace就会使他们进入到同一个栈。。不会重复创建Activity。

原文地址:https://www.cnblogs.com/wgha/p/5831118.html