首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

对 FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVITY_CLEAR_TOP、FLAG_ACTIVITY_SINGLE_TOP 的理解

1.2 单独 singletop activity 在前台(当前显示的栈的栈顶),不创建,它自己 onNewIntent 被调用 activity 不在前台,创建 1.3 单独 cleartop activity...finish 后重建 activity 在启动它的栈里不存在,在启动它的栈里创建 1.4 cleartop + singletop activity 在前台(当前显示的栈的栈顶),不创建,它自己 onNewIntent...被调用 activity 不在前台 activity 在启动它的栈里存在,它上面的 activity 会出栈,它自己 onNewIntent 被调用 activity 在启动它的栈里不存在,在启动它的栈里创建...被调用 activity 不在前台 activity 需要的栈存在,在该栈中创建一个 activity 或将该栈移至前台(它自己 onNewIntent 被调用) activity 需要的栈不存在,...被调用 activity 不在前台 activity 在它需要的栈里存在,它上面的 activity 会出栈,它自己 onNewIntent 被调用 activity 在它需要的栈里不存在,在它需要的栈里创建

89720

Activity启动模式SingleTask和Intent.FLAG_ACTIVITY_CLEAR_TOP区别

如果是,则不创建新的 activity B 实例而是直接引用这个栈顶实例,同时 B 的 onNewIntent 方法会被回调,通过该方法的参数可以取得当前 Intent 的信息;如果栈顶不是 activity...但是,如果这个 Activity 已经存在于另一个任务栈中,则系统会销毁该 Activity 以上的所有Activity,然后调用该 Activity的 onNewIntent() 方法,不会创建新的实例...Intent.FLAG_ACTIVITY_CLEAR_TOP:销毁目标Activity和它之上的所有Activity,重新创建目标Activity,不会调用onNewIntent方法。...Intent.FLAG_ACTIVITY_SINGLE_TOP :当该activity处于栈顶时,可以复用,直接onNewIntent。...方法同样打印栈信息: protected void onNewIntent(Intent intent) { super.onNewIntent(intent);

86710

你不该忽略的LaunchMode

这种情况表现方式与默认的standard模式一致 2.如果我将之前的Activity堆栈稍作修改 C B A 再次启动C,此时Activity堆栈为 C (之前的实例C,新的intent数据可以通过onNewIntent....当前Activity堆栈为 D C B A 现在我对C添加launchMode="singleTask",并在D中启动C,此时Activity堆栈为 C (之前的实例C,新的intent数据可以通过onNewIntent...B A D会被从Activity堆栈中移除,然后再复用之前的实例 2.当前Activity堆栈为 C B A 再次启动C,此时Activity堆栈为 C (之前的实例C,新的intent数据可以通过onNewIntent...第二个Activity堆栈 E 现在我在D中启动E,此时Activity堆栈为 第一个Activity堆栈 D C B A 第二个Activity堆栈 E (之前的实例E,新的intent数据可以通过onNewIntent

48220

Activity三问—猫眼真题

每次启动都会新建一个Activity实例,并进入当前任务栈 singleTop,如果要启动的Activity在栈顶存在实例,则不会重新创建Activity,而是直接使用栈顶的Activity实例,并回调onNewIntent...singleTask,如果要启动的Activity在栈中存在实例,则不会重新创建Activity,而是直接使用栈里的Activity实例,并回调onNewIntent方法。...singleInstance,有点单例的感觉,就是所启动的Activity会单独放在一个任务栈里,并且后续所有启动该Activity都会直接用这个实例,同样被重复调用的时候会调用并回调onNewIntent...所以生命周期调用是 (C)onPause→(B)onNewIntent→(B)onRestart→(B)onStart→(B)onResume→(C)onStop→(C)onDestory 2)A→B→...所以生命周期调用是 (C)onPause→(B)onNewIntent→(B)onRestart→(B)onStart→(B)onResume→(C)onStop 3)A→B→C,B启动模式为singleInstance

52830

【Android 应用开发】Activity 返回堆栈管理 ( 栈内复用模式 singleTask | 单实例模式 singleInstance )

Activity 实例不在栈顶 , 说明该 Activity 在栈底 , 并且上面还有若干 Activity 压着 , 已经存在的 Activity 实例会接收到一个回调 , 调用 Activity.onNewIntent...常量标志位 ; ② Activity 实例就在任务栈栈顶 ( 返回堆栈仅有一个 Activity ) : 如果 Activity 实例就在返回堆栈的栈顶 , 那么只需要调用 Activity 的 onNewIntent...方法复用 ; 该 Activity 实例不在栈顶 : 调用 onNewIntent 方法 , 并且设置 FLAG_ACTIVITY_BROUGHT_TO_FRONT 标志清空除该根 Activity...之外的其它 Activity 实例 ; ③ 有该 Activity 实例的任务栈在前台 : 先将该任务激活到前台 , 然后执行下面操作 ; 该 Activity 实例在栈顶 : 直接调用 onNewIntent...方法复用 ; 该 Activity 实例不在栈顶 : 调用 onNewIntent 方法 , 并且设置 FLAG_ACTIVITY_BROUGHT_TO_FRONT 标志清空除该根 Activity

98110

Activity四种launchMode

2.SingleTop 栈顶Activity不会被重复创建,会触发onNewIntent()事件,不在栈顶时可以多次实例化。...task,创建一个Activity; (2)如果存在一个不同的task包含这个Activity的实例,会切换到这个task,将这个Activity以上的Activity弹出,并且触发这个Activity的onNewIntent...Activity的实例,但是在当前的task中本身就存在这个Activity实例,不会新建task,而会在当前task中,将这个Activity以上的Activity弹出,并且触发这个Activity的onNewIntent...如果没有一个task包含这个Activity的实例,会新建一个task,创建一个Activity; (2)如果存在一个task包含这个Activity的实例,会切换到这个task,并且触发这个Activity的onNewIntent

50890

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券