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

Activity 不只有跳转。功能篇(一)

--->onStart--->onResume---onPause>onNewIntent--->onResume 当ActivityA的LaunchMode为SingleInstance,SingleTask...: 如果ActivityA已经在堆栈中,那么此时会调用onNewIntent()方法,生命周期调用顺序为: onCreate--->onStart--->onResume---按下Home键>onPause...--->onstop--->onNewIntent--->onRestart--->onstart--->onResume 注意:在内存吃紧的情况下,系统可能会kill掉后台运行的 Activity ,...如果不巧要启动的那个activity实例被系统kill了,那么系统就会调用 onCreate 方法,而不调用 onNewIntent 方法。...这里有个解决方法就是在 onCreate 和 onNewIntent 方法中调用同一个处理数据的方法, 总结:在activityA中设置了对应的启动模式后,其他(自己也行)activityB往A中使用intent

1.1K20

对 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 在它需要的栈里不存在,在它需要的栈里创建

96620

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);

94410

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

53830

037android初级篇之Activity的几个重要函数

onNewIntent protected void onNewIntent(Intent intent) singTask模式下,系统创建一个新的Task,并在Task的底部实例化Activities...然而,当一个实例存在于一个独立的Task时,系统不是去创建一个新的实例,而是调用onNewIntent()路由到其他任务的实例。在同一时间,只存在一个Activity实例。...Activity第一启动的时候执行onCreate()---->onStart()---->onResume()等后续生命周期函数,也就时说第一次启动Activity并不会执行到onNewIntent(...而后面如果再有想启动Activity的时候,那就是执行onNewIntent()---->onResart()------>onStart()----->onResume()....当调用到onNewIntent(intent)的时候,需要在onNewIntent() 中使用setIntent(intent)赋值给Activity的Intent.否则,后续的getIntent()都是得到老的

71320

你不该忽略的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

50920

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

51990

【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

1.1K10

Android面试题之Activity的启动模式和flag

singleTop: 如果当前要启动的Activity就是在栈顶的位置,那么此时就会复用该Activity,并且不会重走onCreate方法,会直接它的onNewIntent方法,如果不在栈顶,就跟standard...此时不想让接收推送的消息的activity再次创建,那么此时正好可以用该启动模式,如果之前activity栈中是A–>B–>C如果点击了推动的消息还是A–>B–C,不过此时C是不会再次创建的,而是调用C的onNewIntent...FLAG_ACTIVITY_SINGLE_TOP 如果在上面的基础上再加上FLAG_ACTIVITY_SINGLE_TOP此时就不重新创建B了,也就直接走B的onNewIntent。...FLAG_ACTIVITY_CLEAR_TOP+FLAG_ACTIVITY_SINGLE_TOP=singleTask,此时要打开的activity不会被重建,只是走onNewIntent方法。...FLAG_ACTIVITY_NEW_TASK+FLAG_ACTIVITY_SINGLE_TOP 用在当app正在运行点击push消息进到某个activity中的时候,如果当前处于该activity,此时会触发activity的onNewIntent

6810

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券