Activity的SingleTask启动模式:
以”singleTask”方式启动的Activity,全局只有唯一个实例存在,因此,当我们第一次启动这个Activity时,系统便会创建一个新的任务,并且初始化一个这样的Activity的实例,放在新任务的底部,如果下次再启动这个Activity时,系统发现已经存在这样的Activity实例,就会调用这个Activity实例的onNewIntent成员函数,从而把它激活起来。从这句话就可以推断出,以”singleTask”方式启动的Activity总是属于一个任务的根Activity。
在实际的使用过程中,需要注意SingleTask的启动模式,从字面与解释理解上面就已经说明,是从新开始一个任务站,那么该任务栈与一之前的Activity的任务栈就不会存在多大的关联,今天在书写代码的时候,遇到以下问题,分享以下。
在ActivityA中,startActivityForResult到ActivityB,其中ActivityB设置为SingleTask。
那么在实际出现的现象为:
ActivityA的onActivityResult将会首先被回调,然后再执行ActivityB的onCreate函数,也就说无论ActivityB返回什么内容,在ActivityA中都不会被接收到。
所以在使用SingleTask的方法不要随便使用。
另外onNewIntent()就是针对SingleTask使用的回调,当执行调用多个Activity对象的时候,会回调onNewIntent对象。