活动的启动模式有四种,我们默认的启动方式是standard, 但实际中我们往往要根据需求,要选择恰当的启动模式,启动模式分别是standard,singleTop,singleTask, singleInstance这四种。
有时候会觉得重复创建实例不合理,这时候就要用singleTop模式。
使用singleTop模式,启动活动发现返回栈的栈顶已经是该活动,就可以直接使用它,不会再创建新的活动实例,减少垃圾回收gc的负担。
话不多说,先上图。
使用singleTop模式,如果该活动没有在栈顶,还可能创建多个活动实例。那如果要让活动在整个应用程序都只有存在一个实例,就需要上图的singleTask模式了。
每次启动时,系统会先在返回栈中检查是否存在该活动实例,发现已经存在则直接使用该实例,并把其他在这活动之上的活动统统出栈,发现没有就创建一个新的活动实例。
接下来我们讲最复杂也是最实用的模式。singleInstance模式可以实现其他活动和我们活动共享这个活动的实例,由于同一活动的不同返回栈必然是创建了新的活动实例。使用singleInstance模式下会有单独的返回栈来管理这个活动,不管哪个应用程序访问该活动,都共用一个返回栈,很好解决了共享活动实例的问题。