Activity四种加载模式

    xiaoxiao2026-10-06  2

    Activity四种加载模式

    在android的多activity开发中,activity之间的跳转可能需要有多种方式,有时是普通的生成一个新实例,有时希望跳转到原来某个activity实例,而不是生成大量的重复的activity。加载模式便是决定以哪种方式启动一个跳转到原来某个Activity实例。

    1.standard:标准模式(默认模式),一调用startActivity()方法就会产生一个新的实例。窗口类可以实例化多次,每一个实例可以属于不同的任务,一个任务也可以有同一个窗口的多个实例。现在我们假设 A 跳到 B ,然后 B 跳到 B,再 B 跳到 A,都采用默认的加载模式,栈的情况是怎么样的呢

    2.被跳转的Activity位于Task顶部时:不会创建新的实例,直接复用已有的Activity实例 被跳转的Activity不是位于顶部时:创建一个新的实例,同standard模式相似

    现在我们假设 A 跳到 B ,然后 B 跳到 B,再 B 跳到 A,B采用栈顶单例加载模式,栈的情况是怎么样的呢

    3.singleTask —>栈内单例(在同一个Task内只有一个实例)

    采用这种模式分三种情况:

    a)如果将要启动的目标Activity不存在,系统将会创建目标Activity的实例,并将它加入Task栈顶。 b)如果将要启动的目标Activity已经位于Task栈顶,此时同singleTop模式 c)如果将要启动的目标Activity没有位于Task栈顶,系统将会把位于该Activity上面的所有Activity移除Task栈,从而使得目标Activity转入栈顶。 现在我们假设 A 跳到 B ,然后 B 跳到 B,再 B 跳到 A,B采用栈内单例加载模式,栈的情况是怎么样的呢

    4.singleInstance —->全局单例(会单独拥有一个栈)

    采用这种模式启动目标Activity时,可分为如下两种情况: a)如果将要启动的目标Activity不存在,系统会先创建一个全新的Task,在创建目标Activity的实例,并将它加入新的Task的栈顶。 b)如果将要启动的目标Activity已经存在,无论它位于哪个应用程序中,无论它位于哪个Task中,系统会把该Activity所在的Task转到前台,从而使用该Activity显示出来。 需要指出:采用单例模式加载Activity总是位于Task栈顶 采用单例模式加载Activity所在Task只包含该Activity 现在我们假设 A 跳到 B ,然后 B 跳到 B,再 B 跳到 A,B采用全局单例加载模式,栈的情况是怎么样的呢

    转载请注明原文地址: https://ju.6miu.com/read-1312696.html
    最新回复(0)