Activity 启动模式

相关定义

  • standard。默认使用的模式,无论此 activity 是否已经存在于任务栈中,都会新建这个 activity 的实例。
  • singleTask。栈内复用模式。若要启动的 activity 已经存在于任务栈中,则弹出至栈顶且在 activity 之上的 同一栈内的 activity 都会出栈。onNewIntent() 方法会被回调,onStart() 和 onResume() 也会被回调。
Activity 启动模式_第1张图片
singleTask 模式的 activity
  • singleTop 。栈顶复用模式。若要启动的 activity 处于 它的任务栈的栈顶,则不会创建新的实例。onNewIntent() 会被回调,onStart()、onResume() 方法也会被调用。
Activity 启动模式_第2张图片
singleTop 模式的 activity.png
  • singleInstance。单实例任务栈模式。此模式下的 activity 单独开启任务栈,这个任务栈只有该 activity 一个实例。后续对 该 activity 的启动都不会创新新的实例,直接复用。onNewIntent() 会被回调(已验证)。

相关任务栈的打印验证

  • MainActivity 与 ThirdActivity 使用默认-standard模式,SecondActivity 设置了singleInstance模式,相关任务栈:
Activity 启动模式_第3张图片
SecondActivity 设置了 singleInstance .png

可以看到 SecondActivity 处于单独的任务栈中,而 ThirdActivity 处于 与 Main 相同的任务栈中。

  • ThirdActivity 跳转至设置了 singleTask 模式的 MainActivity,相关任务栈:
Activity 启动模式_第4张图片
MainActivity 设置 singleTask

可以看到 ThirdActivity 直接被弹出任务栈,设置了singleInstance 模式的 SecondActivity 不受影响。

  • ThirdActivity 跳转至设置了 singleTop 模式的 MainActivity ,相关任务栈:
Activity 启动模式_第5张图片
MainActivity 设置了singleTop.png

MainActivity 不处于任务栈的栈顶,从而创建一个新的 MainActivity 的实例。

你可能感兴趣的:(Activity 启动模式)