当一个新的activity启动时不会调用以下哪个方法
发布网友
发布时间:2022-12-30 07:46
我来回答
共4个回答
热心网友
时间:2023-10-29 16:33
不会调用goToActivity
热心网友
时间:2023-10-29 16:33
android任务栈:我们每次打开一个新的Activity或者退出当前Activity都会在一个称为任务栈的结构中添加或者减少一个Activity组件,一个任务栈包含了一个activity的集合。android通过ActivityRecord、TaskRecord、ActivityStack、ActivityStackSupervisor,ProcessRecord有序地管理每个activity。
一:Standard 标准模式
这是android的默认启动方式,即使不在AndroidManifest.xml里面设置launchMode,也是默认的这个模式。每次启动一个A activity都会创建一个A activity的实例入栈,无论A activity是否存在。
生命周期:onCreate;onStart;onResume都会被调用。
举个例子:任务栈中有A、B、C三个activity,此时C处于栈顶,C的启动模式为Standard。若C跳转到 C;结果还会有一个C activity进入栈中,成为栈顶。
二:SingleTop栈顶复用模式
此模式分为2中情况:(1)如果需要创建的activity已经位于栈顶,此时直接复用该栈顶activity,不再创建新的activity;(2)如果要创建的activity不处于栈顶,此时才会创建一个新的activity入栈,同Standard一样。
生命周期:第一种情况:onCreate 、onStart不会被系统调用,因为他没有什么改变,但是onNewIntent会被调用(activity被正常创建的时候不会调用这个方法);第二种情况同Standard模式。
举个栗子:activity栈中有三个activity,分别是A、B、C。C处于栈顶,且为SingleTop模式。(1)情况1,C中加入点击事件,跳转到C中,此时的结果是复用栈顶的C。(2)情况2,C中加入点击事件跳转到A。结果是创建一个新的A 入栈,A成为栈顶。
三:SingleTask栈内复用模式
说明:如果创建的A activity已经处于栈中,此时不会创建新的Activity,而是会将A activity上面的其他activity摧毁,使得A成为栈顶。
生命周期:同SingleTop模式一样,只会回调一次onNewIntent方法。
举个栗子:此时有A、B、C三个activity,C位于栈顶,启动模式为SingleTask。(1)情况一,C中加入点击事件,跳转到C,此时直接复用栈顶的C Activity。(2)情况二,C跳到A ,会将A之上的所有activity销毁,使A成为 栈顶。
四:SingleInstance单实例模式
说明:全局单例模式,加强版的SingleTask模式。具有所有SingleTask的特性,除此之外,改模式的activity仅仅能单独位于一个任务栈中,这个经常应用于系统的应用中,如,锁屏,Launch等等,整个系统中仅仅有一个。
热心网友
时间:2023-10-29 16:34
对Android而言,Activity有四种启动模式,它们是:
1. standard 标准模式也是默认模式,每次都新建一个实例对象。
2. singleTop 如果在任务栈顶发现了相同的实例则重用,否则新建并压入栈顶。
3、singleTask 如果在任务栈中发现了相同的实例,将其上面的任务终止并移除,重用该实例。否则新建实例并入栈。
4、singleInstance 允许不同应用,进程、线程等共用一个实例,无论从何应用调用该实例都重用。
热心网友
时间:2023-10-29 16:34
当一个新的activity启动时不会调用goToActivity方法