安卓四种activity启动模式介绍及应用场景说明(standard,singleTop,singleTask,singleInstance)

简要介绍

安卓采用栈来管理activity,每启动一个新的activity,就将原先的activity压入栈中,当用户返回时,就将栈里的activity推出来. 一个app可以有多个栈. 当一个app出现多个栈时,在系统的最近任务里就会出现多个窗口,如下图:
安卓四种activity启动模式介绍及应用场景说明(standard,singleTop,singleTask,singleInstance)_第1张图片

四种activity启动模式

  1. standard 每次跳转到activity,都新创建activity.
  2. singleTop 当目标activity刚好在当前栈顶时,重用已有activity,不会调用onCreate方法,而是调用onNewIntent进行intent传递.
  3. singleTask 如果未指定android:taskAffinity,则检查当前栈里是否目标activity,如果有,则重用,并通过onNewIntent传递intent;同时将该activity上面的activity全部清理出栈. 如果指定了android:taskAffinity,则检查android:taskAffinity对应的栈是否已存在,如果不存在,则创建新的栈并在栈里创建该activity.如果已存在,则检查activity是否存在.后面步骤同不指定android:taskAffinity的情况.安卓四种activity启动模式介绍及应用场景说明(standard,singleTop,singleTask,singleInstance)_第2张图片
  4. singleInstance 始终只有一个实例且自己独占一个栈,其他activity不会进入它的栈. 此模式应用较少.

应用场景

  1. singleTop: 当页面跳转会出现不停的跳转到自己当前activity时,可以选择singleTop.
  2. singleTask: 当页面跳转会出现循环时,应选择singleTask.如A->B->C->A,对于A则可以选择singleTask.避免栈过深,导致用户难以返回前面的界面.
  3. singleInstance用的较少,其他时候一般都默认用standard模式.

安卓开发技术分享: https://blog.csdn.net/yinxing2008/article/details/84555061
点击关注专栏,查看最新技术分享
更多技术总结好文,请关注:「程序园中猿」



你可能感兴趣的:(安卓)