文章目录
onNewIntent()的调用时机
在了解onNewIntent()的调用时机之前,我们首先需要对Android中Activity的加载模式做一个了解:
在Android开发中,我们都知道,在默认的情况下,如果我们启动的是同一个Activity的话,系统会创建多个实例并把它们一一放入任务栈中。当我们点击返回(back)键,这些Activity实例又将从任务栈中一一移除,遵循的原则是“后进先出”(先进后出)的原则。
如果Activity没有启动模式的概念,那么多次启动一个Activity就会产生多个实例,造成了内存资源的浪费,这也就是为何会有启动模式存在。
四种启动模式
- standard(标准模式):这种启动模式为标准模式,也是默认模式。每当我们启动一个Activity,系统就会相应的创建一个实例,不管这个实例是否已经存在。这种模式,一个栈中可以有多个实例,每个实例也都有自己的任务栈。而且是谁启动了此Activity,那么这个Activity就运行在启动它的Activity所在的栈中。
- singleTop(栈顶复用模式):这种启动模式下,如果要启动的Activity已经处于栈的顶部,那么此时系统不会创建新的实例,而是直接打开此页面,同时它的onNewIntent()方法会被执行,我们可以通过Intent进行传值,而且它的onCreate(),onStart()方法不会被调用,因为它并没有发生任何变化。若该Activity在任务栈中的实例不在栈顶,或者无实例在