前言:
举例一: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