Android知识回顾

Android的启动模式
  • standard:标准模式
  • singleTop:栈顶复用模式
  • singleTask:栈内复用模式
  • singleInstance:单实例模式
启动Activity时并指定启动模式有两种方式
  • 一种是在清单文件中指明
  • 另一种则是在Intent中添加FLAG标志位
    默认是标准模式
standard启动模式

系统在启动 Activity 的任务中创建 Activity 的新实例并向其传送 Intent。Activity 可以多次实例化,而每个实例均可属于不同的任务,并且一个任务可以拥有多个实例。

    //standard模式启动A
    public void standardStartA(View view) {
        startActivity(new Intent(this, ActivityA.class));
    }

创建Activity然后与任务关联

singleTop启动模式
  • 如果当前任务的顶部已存在 Activity 的一个实例,则系统会通过调用该实例的 onNewIntent() 方法向其传送 Intent,而不是创建 Activity 的新实例.
  • Activity 可以多次实例化,而每个实例均可属于不同的任务,并且一个任务可以拥有多个实例(但前提是位于返回栈顶部的 Activity 并不是 Activity 的现有实例)。

例:

  • (1) ActivityA以singleTop模式启动ActivityB,然后ActivityB再以singleTop模式启动ActivityB。
  • (2) 任务栈中有两个Activity,分别是ActivityB和ActivityA;下面从ActivityB再次以singleTop模式启动ActivityB。
  • (3) 任务栈中依旧是ActivityB和ActivityA,这就是singleTop模式的作用,栈顶复用,因为ActivityB启动ActivityB时,ActivityB已经位于栈顶,那么就会直接使用ActivityB,而不是直接创建。
singleTask启动模式
  • 系统创建新任务并实例化位于新任务底部的 Activity。但是,如果该 Activity 的一个实例已存在于一个单独的任务中,则系统会通过调用现有实例的 onNewIntent() 方法向其传送 Intent,而不是创建新实例
  • 一次只能存在 Activity 的一个实例
  • 尽管 Activity 在新任务中启动,但是用户按“返回”按钮仍会返回到前一个 Activity。
singleInstance启动模式
  • 与 “singleTask” 相同,只是系统不会将任何其他 Activity 启动到包含实例的任务中,该 Activity 始终是其任务唯一仅有的成员;
  • Activity 启动的任何 Activity 均在单独的任务中打开

你可能感兴趣的:(Android知识回顾)