Android中startActivities的准确用法

平常一直在使用startActivity做启动单个activity,但是最近发现了startActivities可以实现很多应用场景,比如点击通知可以用这个方法跳转两个activity,这样先进来就是需要展现的activity返回的时候就能跳转到启动页或者广告页,实现更好的场景交互

那么具体是怎么实现的呢?其实要知道,这个方法就是启动多个activity,那么activity的启动方式又是怎么样的呢?是同时启动还是挨个启动,是同时压入栈中吗?于是写了简单的demo来验证一下自己的想法

 fun arrayIntent(view : View) {
        val intent1   = Intent(this,IntentActivity1::class.java)
        val intent2   = Intent(this,IntentActivity2::class.java)
        val intent3   = Intent(this,IntentActivity3::class.java)
        
        startActivities(arrayOf(intent1,intent2,intent3))
    }

用startActivities同时启动3个activity

通过返回我们可以看到,先展示是Activity3,然后是Activity2,最后是Activity1

那么是不是这样的:

第一种猜测:

我startActivities时,Activity1、Activity2和Activity3都被创建了,只是依次压入栈底了,我finish掉Activity3,清除了栈顶,然后Activity2就可见了,清除Activity2之后,Activity1就到栈顶了。

第二种猜测
还是另外一种情况:先创建了Activity3,等到Activity3 finish掉之后,再开始创建Activity2,等到Activity2 finish掉之后,再创建Activity1呢?我们先打一波log看看:


 IntentActivity3 onCreate
 IntentActivity2onCreate
 IntentActivity3 onDestroy
 IntentActivity1 onCreate
 IntentActivity2 onDestroy
 IntentActivity1 onDestroy
 

可以看到我们上述的第二种猜想是正确的,在同时启动了多个activity的时候,销毁了最上级的activity就会创建新的activity,而不是同时创建的

那么问题来了,知道了它的运行逻辑,有什么实战意义呢

需求:

当用户收到了一个通知,并且app此时在后台运行,那么当点击通知的时候希望先跳到广告业再跳到业务页面,当返回的时候,又希望回到app的首页,我们就可以用这种方式实现,因为我们的app很多初始化工作都是在广告页实现的,比如验证token啊,当少了这一步,后面的接口就有可能报错,所以这种方式保证了初始化工作的实现

 

你可能感兴趣的:(Android,kotlin)