Activity的启动模式分为四种:
1. Standard模式:默认启动模式,这种模式下,Activity可以有多个实例,每次启动Activity,不管任务栈中是否已经有该Activity的实例,系统都会创建一个新的Activity实例。
2. SingleTop模式:如果启动Activity时,该Activity正位于栈顶,则不会创建新的Activity实例,否则,仍会创建新的实例。
3. SingleTask模式:同一个任务栈只能有一个Activity实例。
4. SingleInstance模式:整个系统只能有一个Activity实例,启动一个singleInstance Activity时,系统会创建一个新的任务栈,并且该任务栈只有它一个Activity。
onNewIntent的触发时机:
当启动模式为SingleTop时,Activity实例当前在栈顶时,此时会调用onNewIntent方法,调用顺序为:onCreate—>onStart—>onResume—>onPause—>onNewIntent—>onResume。
当启动模式为SingleInstance和singleTask时,若Activity已在任务栈时,就会调用onNewIntent方法,调用顺序为:onPause—>onNewIntent—>onRestart—>onStart—>onResume。
所以,只有SingleTop(位于栈顶),SingleTask和SingleInstance(且栈中已存在实例),再次启动它们时才会调用,仅从后台切换到前台而不再次启动的情况下不会触发onNewIntent。