Activity 四种启动模式及应用场景

699 阅读1分钟
  1. Activity 启动模式及区别 Standard标准模式,每次都会在栈顶创建一个实例,在mainfest中不设置就默认standard SingleTop栈顶复用,检查栈顶是否存在该Activity的实例,存在复用调用onNewIntent,不存在创建新实例。
    SingleTask栈内单例,检查栈内是否存在该Activity的实例,存在复用调用onNewIntent+ClearTop,不存在创建新实例,检查系统中是否存在跟该Activity的taskAffinity相同的Task,存在在该Task中创建,不存在,就在新的任务栈中创建启动
    SingleInstance堆内单例,会启动一个新的任务栈来管理Activity实例,栈内只有这一个Activity,没有其他Activity,整个系统中存在一个实例,就是内存单例。无论从那个任务栈中启动该Activity,都会将该Activity所在的任务栈转移到前台,使Activity显示。主要作用是为了在不同程序中共享一个Activity实例。

  2. Activity 不同启动模式常见应用场景 Standard:默认,无需设置
    SingleTop:推送通知页面,收到多条推送消息,点开均由同一实例展示。
    SingleTask:APP的主页,浏览器的主页。不管从多少个应用启动浏览器,只会启动主界面一次,其余情况都会走onNewIntent,并且会清空主界面上面的其他页面。
    SingleInstance:闹铃,来电显示等页面,不同APP调用此类Activity时,首次创建实例,之后其他APP只能复用此实例。