Activity启动模式之singleTop

前言:

——了解任务和返回堆栈  |  Android 开发者  |  Android Developers (google.cn)

举例一:Activity在栈顶收到多个Intent

MainActivity(standard)跳转FirstActivity(singleTop),FirstActivity发送两次Intent启动SecondActivity,SecondActivity第二次收到Intent时调用onNewIntent(),并且只保留一个实例

 TaskRecord{804c107 #1113 A=com.tech.activitymode U=0 StackId=1 sz=3}
      Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.tech.activitymode/.MainActivity }
        Hist #2: ActivityRecord{7ac5b16 u0 com.tech.activitymode/.SecondActivity t1113}
          Intent { flg=0x20000000 cmp=com.tech.activitymode/.SecondActivity (has extras) }
          ProcessRecord{e5b785d 29575:com.tech.activitymode/u0a399}
        Hist #1: ActivityRecord{da288f2 u0 com.tech.activitymode/.FirstActivity t1113}
          Intent { cmp=com.tech.activitymode/.FirstActivity (has extras) }
          ProcessRecord{e5b785d 29575:com.tech.activitymode/u0a399}
        Hist #0: ActivityRecord{423d383 u0 com.tech.activitymode/.MainActivity t1113}
          Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.tech.activitymode/.MainActivity }
          ProcessRecord{e5b785d 29575:com.tech.activitymode/u0a399}

生命周期:

 

举例二:Activity不在栈顶收到Intent

画面跳转:MainActivity(standard)->FirstActivity(singleTop)->SecondActivity(standard)->FirstActivity(singleTop)

实例:FirstActivity创建新的实例

生命周期:

MainActivity onCreate
MainActivity onStart
MainActivity onResume MainActivity@eb19290
MainActivity onPause
FirstActivity onCreate
FirstActivity onStart
FirstActivity onResume FirstActivity@510f309
MainActivity onStop
FirstActivity onPause
SecondActivity onCreate
SecondActivity onStart
SecondActivity onResume SecondActivity@2282042
FirstActivity onStop
SecondActivity onPause
FirstActivity onCreate
FirstActivity onStart
FirstActivity onResume FirstActivity@e95c013
SecondActivity onStop

举例三:Activity不在栈顶收到Intent

画面跳转:MainActivity(standard)->FirstActivity(singleTop)->SecondActivity(standard)->点击back键

实例:FirstActivity未创建新的实例

 

MainActivity onCreate
MainActivity onStart
MainActivity onResume
MainActivity onPause
FirstActivity onCreate
FirstActivity onStart
FirstActivity onResume
MainActivity onStop
FirstActivity onPause
SecondActivity onCreate
SecondActivity onStart
SecondActivity onResume
FirstActivity onStop
SecondActivity onPause
FirstActivity onRestart
FirstActivity onStart
FirstActivity onResume
SecondActivity onStop
SecondActivity onDestroy

举例四:Activity在栈顶自己发送Intent

前提条件:MainActivity使用intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)启动FirstActivity,FirstActivity未在AndroidManifest文件中设置SingleTop,FirstActivity自启动时未使用flag

画面跳转:MainActivity(standard:setflag)->FirstActvity(standard)->FirstActvity(standard)

实例:FirstActivity创建新的实例

 生命周期:

MainActivity onCreate
MainActivity onStart
MainActivity onResume
MainActivity onPause
FirstActivity onCreate
FirstActivity onStart
FirstActivity onResume
MainActivity onStop
FirstActivity onPause
FirstActivity onCreate
FirstActivity onStart
FirstActivity onResume
FirstActivity onStop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值