Activity和Task都有taskAffinity属性:
1.Activity默认值是Manifest中的包名,也可以在<application>标签下用android:taskAffinity来自定义。
2.Task的taskAffinity和根Activity的taskAffinity相同。
Activity在Task中入栈、出栈、重用、重定任务栈,这些操作除了取决于Activity的lauchMode属性,还有Activity的Task属性、Intent的Flags属性。
一、Activity的Task属性:
1.android:alwaysRetainTaskState
根Activity属性值为true :Task始终保持原有状态。
根Activity属性值为false:当前Task退到后台很长时间又回到前台,只保留根Activity,其他Activity实例可能全部出栈。
2.android;clearTaskOnLaunch
根Activity属性值为true :Task退到后台,又回到前台,只保留根Activity,其他Activity实例全部出栈。
根Activity属性值为false:Task可能保持原有状态。
3.android:allowTaskReparenting
Activity属性值为true:当前Task退到后台,又回到前台,Activity实例出栈,可以移动到有相同taskAffinity的Task中。
4.android:finishOnTaskLaunch
Activity属性值为true:当前Task退到后台,又回到前台,Activity实例出栈,不能移动到有相同taskAffinity的Task中。
二、Intent的Flags属性:
1.默认值
Activity实例压入当前Task。
2.FLAG_ACTIVITY_NEW_TASK
能找到taskAffinity相同的Task,就入栈;找不到,就新建Task,然后入栈。
3.FLAG_ACTIVITY_SINGLE_TOP (singleTop)
如果栈顶存在此Activity实例,就重用。
4.FLAG_ACTIVITY_CLEAR_TOP (singleTask)
如果栈内存在此Activity实例,就重用。
5.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
从主菜单启动应用,含有此属性;长按home键,从最近记录启动应用,不含此属性。
6.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
如果启动应用时含有 属性5 ,以含有此属性的Intent为分界点,弹出此分界点以上的全部Acticity实例。
本文深入探讨了Android Activity的Task属性(如alwaysRetainTaskState、clearTaskOnLaunch、allowTaskReparenting、finishOnTaskLaunch)以及Intent的Flags属性(如FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVITY_SINGLE_TOP、FLAG_ACTIVITY_CLEAR_TOP、FLAG_ACTIVITY_RESET_TASK_IF_NEEDED、FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET)在控制Activity在Task中的行为方式上的作用。通过解析这些配置选项,开发者能够更灵活地管理应用程序的任务栈结构。
3159

被折叠的 条评论
为什么被折叠?



