欢迎访问宙启技术站
智能推送

Activity启动模式的示例分析

发布时间:2023-05-16 16:34:44

Activity启动模式是指在Android中,启动一个Activity时所采用的方式。Android提供了四种启动模式,分别为standard、singleTop、singleTask和singleInstance。每种模式有不同的特点和适用场景。

1、standard模式启动

启动Activity时,系统默认采用的启动模式即为standard模式。每次启动该Activity都会创建一个新的实例,即每次启动都会新建一个activity实例。适用场景:普通的Activity启动方式,多数情况下此模式都不需要指定。

使用场景:

当你要回到上一个Activity并且保持原来的状态。

当你的应用程序想要在新的Activity中显示一些非基本类型的数据。

当你的应用程序要分发某些信息(通知)并且要求用户很快回到前面的Activity。

2、singleTop模式启动

singleTop模式用来限制一个Activity实例的创建。如果一个任务栈已经存在当前Activity的实例,那么系统就不会再创建新的实例,而是把原有实例移至栈顶并调用它的onNewIntent方法。即在栈顶,不会重复创建。适用场景:有多个Activity实例时,需要将某个页面置于栈顶。

应用场景:

当你的Activity可能已经存在于调用者的Task中的时候。

当你的Activity是独立的,无法和调用者的Activity共用数据或状态。

当你的Activity能接受Intent,但也可能会在onCreate()调用之前接受到多个Intent。

3、singleTask模式启动

singleTask模式用来保证一个Activity只存在一个实例,同时也限制其他Activity与它的关联方式。此模式会开启新的Task,可比作进程中的一个独立模块。即如果栈中已经存在该页面,那么整个栈中该页面上面的所有Activity都会被销毁,只会保留一个实例。适用场景:需要从一个页面回到另一个页面,并清空该页面上面的所有Activity。

应用场景:

当你的Activity需要在程序中存在一次,并且所有的Activity都可以和它通信。

当你的Activity可以从多个Task中被调用,需以new task启动。

当你的应用程序需要让Activity在其他应用程序中共享,或者需要显示在第三方的launcher程序中。

4、singleInstance模式启动

singleInstance模式也是需要保证一个Activity只存在一个实例的模式,但是与singleTask模式不同的地方在于,它不会与其他Activity在同一任务栈中。即该Activity会开启一个新的栈,且该栈中只存在该Activity的实例。适用场景:需要保证该Activity只有一个实例,并且在不同任务栈上。

应用场景:

当你的Activity是一个可以跨越应用程序的共享的功能。

当你的应用程序需要在某个时候,直接用一个新的Task来启动一个新的Activity。

总结一下,四种模式的使用场景如下:

standard模式:普通的Activity启动方式,多数情况下此模式都不需要指定。

singleTop模式:有多个Activity实例时,需要将某个页面置于栈顶。

singleTask模式:需要从一个页面回到另一个页面,并清空该页面上面的所有Activity。

singleInstance模式:需要保证该Activity只有一个实例,并且在不同任务栈上。

综上所述,Android中的Activity启动模式可以根据不同场景选择不同的启动模式,以达到更好的用户体验和应用效果。