Android-Activity的四种启动模式

有的没的

        Application:一组组建的集合,在app安装时,系统会读取Mainfest的信息,将所有的组件解析出来,以便在运行时对组件进行实例化和调度。

         Task:是一组相互关联的activity的集合,控制界面的跳转和返回,这个task存在于back stack的数据结构中,这个栈的基本行为是:当用户在多个activity之间跳转时,执行压栈操作,当用户执行返回键时,执行出栈操作。Task是可以跨应用的,有的activity虽然不在同一个app中,但为了保持用户操作的连贯性,把他们放在同一个任务中。

         TaskAffinity:表示当前activity所在的任务。具有相同affinity的activity属于同一个任务;一个任务的affinity决定于这个任务的根activity的taskaffinity;具有相同的affinity的activity属于同一个任务,为一个activity的taskaffinity设置一个空字符串,表明该activity不属于任何task。Taskaffinity属性不对standard和singtop模式有任何影响。

Standard模式(标准启动模式) 

        在这种模式下启动的activity可以被多次实例化,即在同一个任务中可以存在多个activity的实例,每个实例都会处理一个Intent对象。

Singletop(栈顶复用模式) 

        如果一个以singtop模式启动的activity的实例已经存在于任务栈的栈顶,那么再启动这个activity时,不会创建新的实例,而是重用位于栈顶的那个实例,并且会调用该实例的onNewIntent()方法将Intent对象传递到这个实例中,但若该activity不在栈顶,那么它的行为和standard模式相同,也会创建多个实例。

Singletask(栈内复用模式) 

        当一个具有singtask模式的activity请求启动后,系统首先会寻找是否存在activity想要的任务栈,如果不存在,就要重新创建一个任务栈,然后创建activity的实例后把activity放到栈中,如果存在activity所需的任务栈,并且有activity的实例存在,系统会把activity调到栈顶并调用它的onNewIntent()方法。(这是和设置Intent flags的FLAG_ACTIVITY_CLEAR_TOP不同之处)。

Singleinstance(单实例模式)

        总是在新的任务栈中开启,并且这个新的任务中有且只有这一个实例,也即被该实例启动的其他activity会自动运行于另一个任务中,当再次启动该activity实例时,会重用已存在的任务和实例,并会调用这个实例的onNewIntent()方法。

你可能感兴趣的:(Android-Activity的四种启动模式)