1. 概述
在开发过程中,intent传递数据是最为常见的,用于两个Activity之间的传递数据,自己在做项目过程中遇到过一种情况,就是从第一个Activity给第二个Activity传递数据,但是在第二个Activity接收数据时,一直接收不到数据,找了半天,都没找到原因,最后检查了下第二个Activity在清单文件中的配置,发现第二个Activity配置的launchMode是singleTask:
singleTask的作用是:如果在栈中存在要跳转的Activity,就不会重新创建新的Activity,而是直接用栈中存在的对应Activity,并且把该Activity上边的所有Activity全部清除栈,上边的第二个Activity接收不到数据,原因就是在第二个Activity设置了singleTask,然后从第一个Activity跳转到第二个Activity时,会把第一个Activity清除栈,这个时候数据也会随之消失,所以数据一直传递不过来,把第二个 Activity的 singleTask去掉就可以。
如果之前写的 singleTask目的是为了,一次性退出多个Activity,这个时候对于这种情况可以使用 list集合存储Activity的方式或者采取 栈的方式进行退出多个Activity即可。