有3个Android的Task相关的问题, 看官方文档,好像也没有讲清楚,这里请教各位各位大虾们:
1。  当Intent包含FLAG_ACTIVITY_NEW_TASK时,文档上说“系统会为需要启动的activity寻找与当前activity不同的task。如果要启动的activity的affinity属性与当前所有的task的affinity属性都不相同,系统会新建一个带那个affinity属性的task,并将要启动的activity压到新建的task栈中;否则将activity压入那个affinity属性相同的栈中。”
       但是,如果新起的Activity的affinity属性没有设置,或者默认和当前启动它的Task的affinity相同,那怎么办?? 难道不New一个Task了,而在当前Task上直接Push了吗
2。 allowTaskReparenting属性      当Activity设置了这个属性为TRUE,那么,究竟它何时被移动到另外一个具有相同affinity的Task中那?
3。  当Intent中设置了相应的Task Flag, 目标Activity的配置属性中又设置了相应的LaunchMode, 并且,可能还设置了其他属性,那么这种组合情况下,其行为究竟如何那? 好像文档上从来没有写过这种组合行为。  另外, 这种组合的情况非常多(因为本身Intent的Flag就可以组合), 如何一一了解它的行为那, 比如举个例子:    Intent设置了FLAG_ACTIVITY_NEW_TASK|FLAG_ACTIVITY_SINGLE_TOP,  Activity又设置了LaunchMode为SingleInstance
谢谢啦~~~~

解决方案 »

  1.   

    对AndroidManifest文件的理解相当低,记号。
      

  2.   

    这个我也学过!1。 当Intent包含FLAG_ACTIVITY_NEW_TASK时,文档上说“系统会为需要启动的activity寻找与当前activity不同的task。如果要启动的activity的affinity属性与当前所有的task的affinity属性都不相同,系统会新建一个带那个affinity属性的task,并将要启动的activity压到新建的task栈中;否则将activity压入那个affinity属性相同的栈中。”
      但是,如果新起的Activity的affinity属性没有设置,或者默认和当前启动它的Task的affinity相同,那怎么办?? 难道不New一个Task了,而在当前Task上直接Push了吗
    如果有了一个和新任务亲和度相同的task,则该活动直接就被压入该task的栈中2。 allowTaskReparenting属性  当Activity设置了这个属性为TRUE,那么,究竟它何时被移动到另外一个具有相同affinity的Task中那?文档中不是给出了一个关于这个的example的吗?就是那个关于天气预报的:
    假设一个旅游助理软件中有一个activity是用来报告天气的。它和这个应用程序中的其它activity有相同的affinity(默认affinity)并且允许reparenting。某个activity启动天气预报器,因此它和这个activity属于同一个task。然而,当旅游应用程序进入前台时,天气报告器会被重新分配到旅游应用程序的task中去。

    3。 当Intent中设置了相应的Task Flag, 目标Activity的配置属性中又设置了相应的LaunchMode, 并且,可能还设置了其他属性,那么这种组合情况下,其行为究竟如何那? 好像文档上从来没有写过这种组合行为。 另外, 这种组合的情况非常多(因为本身Intent的Flag就可以组合), 如何一一了解它的行为那, 比如举个例子:  Intent设置了FLAG_ACTIVITY_NEW_TASK|FLAG_ACTIVITY_SINGLE_TOP, Activity又设置了LaunchMode为SingleInstance
    这个我个人觉得要看属性或者标签的决定者是哪个
      

  3.   

    对于第一个问题,当没有显示指定affinity时,系统会自动指定affinity为包名