android singTask 不走oncreat 走onNewInstance

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对象。

    原文作者:蔡振辉
    原文地址: https://www.jianshu.com/p/d3b94e7e52a1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞