FLAG_ACTIVITY_NEW_TASK 比较标准解释如下:
首先会查找是否存在和被启动的Activity具有相同的亲和性的任务栈(即taskAffinity,注意同一个应用程序中的activity的亲和性相同),如果有,则直接把这个栈整体移动到前台,并保持栈中旧activity的顺序不变,然后被启动的Activity会被压入栈,如果没有,则新建一个栈来存放被启动的activity,注意,默认情况下同一个应用中的所有Activity拥有相同的关系(taskAffinity).
作者:3Q竹林
链接:https://www.jianshu.com/p/890d8897caf4
来源:简书
例1:Activity收到两个Intent
MainActivity(standard)发送两个Intent给FirstActivity(singleTask),FirstActivity的OnNewIntent()接收数据,未创建新的实例
生命周期:
MainActivity onCreate
MainActivity onStart
MainActivity onResume
MainActivity onPause
FirstActivity onCreate
FirstActivity onStart
FirstActivity onResume
FirstActivity onPause
FirstActivity onNewIntent: data MainActivity -> FirstActivity
FirstActivity onResume
MainActivity onStop
例2:栈中已有的Activity再次收到Intent
画面跳转:MainActivity(standard)->FirstActivity(singleTask)->SecondActivity(standard)->FirstActivity(singleTask)
FirstActivity未创建新的实例,调用onNewIntent()方法
生命周期:
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 onNewIntent: data SecondActivity -> FirstActivity
FirstActivity onRestart
FirstActivity onStart
FirstActivity onResume
SecondActivity onStop
SecondActivity onDestroy