Flag
FLAG_ACTIVITY_NEW_DOCUMENT
此处document 这个单词实在是不知道怎么翻译才恰当,document 本意就是文档,文件的意思,本文展示就翻译成文档的意思吧,我觉得这样稍微准确一点,因为更具google 官方文档对此flag 的解释以及相关的举例说明中,我觉得用文档可能更好一点,
在说FLAG_ACTIVITY_NEW_DOCUMENT 之前我们想来回想一下我们在pc端某系程序的一种场景,在使用pc 的时候,比如邮件客户端,当我们在阅读邮件某一封邮件的时候,突然需要查看之前的某一封邮件,这时候我们往往不是关掉当前邮件,再去打开另一封有邮件,查看完了后再打开之前关闭的邮件继续查阅。而是在当前邮件窗口打开的同事,在新建一个窗口打开我们需要查看的之前的邮件,这样就可以不用关闭当前的邮件窗口,实现两个邮件窗口同时打开,在查阅过程中随时都可以再窗口之间切换,是不是很方便?这好像是理所当然,pc 上大家都已经习惯了很多很多应用可以同时打开多个窗口,比如office 办公软件,还有浏览器等等,并且通过快捷键或者鼠标很方便再各个窗口之间切换,可是在移动平台android 手机上呢?
大家都知道在android 手机上一般都有3个按键(虚拟的或者物理的)返回键,home 键,recent 键,当我们按下recent 键的时候,手机会启动一个叫 Recents Screen的东西,在 Recents Screen 界面可以实现在之前打开过的app 之间快速切换,之所以能这样是因为android 有一种叫做Task 的机制,默认情况情况下,每次新启动一个app 的时候都会新建一个task,之后启动的App 内的activity 都放入同一个task,也就是说默认情况下不同app 都有不同的task,所以通过recent 在不同task 之间切换就实现了不同app的切换。
既然recent 按键可以实现不同task 之间的切换,那么我们是不是可以在启动App 内的每一个Activity 的时候给每一个Intent add一个 FLAG_ACTIVITY_NEW_TASK 同时在AndroidManifest.xml 文件中为每一个Activity 设置不同的android:taskAffinity,这样每一个Activity 都属于不同的task,就可以通过recent 见来切换了,咋一看貌似是这样,如果这样就能实现了那么