亲缘关系是指Activity愿意属于哪个任务。默认,来自同一个应用程序的所有的Activity彼此有一个亲缘关系。因此,默认情况下在同一个应用程序中的所有Activity都应该属于同一个任务。但是,你能够给一个Activity修改默认的亲缘关系。Activity被定义在不同的应用程序中能够共享一个亲缘关系,或者Activity被定义在同一个应用程序中能够跟不同任务的亲缘关系进行关联。
你能够使用<activity>元素的taskAffinity属性来修改任意给定的Activity的亲缘关系。
taskAffinity属性需要一个字符串值,它必须是在<manifest>元素中声明的唯一的默认包名,因为系统要使用这个名字来给应用程序标识默认任务的亲缘关系。
亲缘关系应用于以下两个方面:
1.当启动Activity的Intent中包含了FLAG_ACTIVITY_NEW_TASK标识时。
默认情况下,一个新的Activity是在调用startActivity()方法的Activity的任务中被启动。它被放到与调用者相同的回退堆栈的上面。但是,如果如果传递个startActivity()方法的Intent包含了FLAG_ACTIVITY_NEW_TASK标识,系统就会寻找一个不同的任务来给安放这个新的Activity。通常这是一个新的任务。但是,如果有一个既存的任务跟这个新的Activity有相同的亲缘关系,它就不会启动一个新的任务,而是在这个有亲缘关系的任务中启动这个Activity。如果没有,就启动一个新的任务。
如果这个标识导致一个Activity开启了一个新的任务,并且用户按下Home按钮离开了它,那么就必须给用户提供一些返回调用这个Activity的任务的方法。某些实例(如通知管理器)总是在外部任务中启动Activity,不会把这个Activity作为它们自己的一部分,因此它们总是把FLAG_ACTIVITY_NEW_TASK标识放到Intent中传给startActivity()方法。如果你有一个能够通过外部实体调用的Activity,就可能使用这个标识,那么就要注意,用户会有一种独立的方式返回到启动它的那个任务,如启动图标(这个任务的根Activity有一个CATEGORY_LAUNCHER的Intent过滤器,详细请参阅启动任务(Starting
a task)章节)。
2.当Activity的allowTaskReparenting属性被设置为“true”时
在这种场景中,这个Activity能从启动它的任务中转移到跟它有亲缘关系的任务中,这种转移发生在跟它有亲缘关系的任务显示在前台的时候。
例如,假设一个报告选择城市的天气条件的Activity被定义成一个旅游应用程序的一部分,它跟同一个应用程序中的其他Activity有着相同的起源关系(默认的应用程序亲缘关系),并且允许使用re-parenting这个属性。当应用中的一个Activity启动了天气预报的Activity,它最初跟你的Activity属于同一个任务。但是,当这个旅游应用程序显示在前台时,这个天气预报的Activity又会被重新关联到天气预报的任务,并且在这个任务中显示。
提示:如果一个.apk文件中从用户的角度看包含了多个应用程序,那么就可能想要使用taskAffinity属性给Activity分配不同的亲缘关系让它跟每个应用进行关联。
注:本人转载系个人觉得翻译的很好,值得收藏,且自己回头看着方便。
如有兴趣请访问作者官方博客http://blog.csdn.net/FireOfStar
分享到:
相关推荐
android 任务跟回退堆栈
文件"11_taskStack"可能包含了针对任务栈的实际编程示例,如通过不同的Intent Flag启动Activity,演示如何处理任务切换、回退以及Activity之间的关系。学习这部分内容,你可以更直观地理解任务栈的工作原理,并将其...
这样,库会自动处理Fragment的添加和回退操作。 除了基本的切换功能,`InstaLikeFragmentTransaction`还提供了其他实用功能,比如监听Fragment的切换事件,以便在切换时执行特定的操作,或者在用户回退时做出相应的...
开发者需要熟练运用FragmentManager和FragmentTransaction来管理Fragment的生命周期,同时注意处理好回退栈,以实现流畅的用户导航体验。通过合理地组织Fragment堆栈,可以使应用的逻辑更加清晰,代码更易于维护。
回退,或者说Rollback WorkItem,是指在工作流系统中,参与者主动将已经执行过的任务从待办任务列表中回退,以便某个节点可以重新处理。这通常发生在参与者发现任务不应由自己处理,或者在执行过程中出现错误的情况...
Fragment回退栈是Android系统管理Fragment的一种机制,它模拟了浏览器的后退功能,用户可以通过点击设备上的返回按钮或者程序逻辑来触发回退操作。下面将详细介绍Android Fragment回退栈的原理、使用方法以及实践中...
11. **Jetpack Navigation**:Android Jetpack组件之一,它提供了一种统一的方式来管理应用内的导航,包括设置目的地、处理动作和回退栈。 12. **LiveData与Room数据库**:LiveData是一种观察者模式的实现,能够...
- **任务(Task)**:在Android中,任务是一系列按堆栈方式组织的Activity,它们共享相同的上下文,用户可以通过返回键逐个回退。任务可以看作是用户完成一项操作的一组界面。 - **任务管理器**:负责创建、维护和...
支持Git和其他版本控制系统,开发者可以方便地进行版本控制操作,如提交、回退、分支管理和合并。 ### 8. **单元测试与UI测试** Android Studio内置JUnit和 Espresso测试框架,支持编写单元测试和UI测试,确保代码...
此外,自Android 3.0(API级别11)开始,系统引入了`ActivityOptions`和`TaskStackBuilder`,允许开发者更灵活地控制任务切换和回退行为。例如,你可以通过`TaskStackBuilder`创建一个新的任务栈,使得按下多任务键...
然而,许多设备仍然运行着低于API Level 11的系统,这就需要v7 AppCompat库来提供一个回退解决方案。通过AppCompat库,开发者可以在API Level 8及以上版本的设备上使用ActionBar特性,从而实现统一的用户界面。 ...
所谓**回退(RollbackWorkItem)**,是指参与者主动将自己待办任务列表中的任务回退到已执行过的人工节点,以便进行重新处理或修正错误。这种机制的存在极大地增强了工作流系统的灵活性和适应性。 #### 为什么需要...
在升级或回退Gradle版本时,开发者通常需要确保与Android Studio和项目的兼容性。可以访问官方分布网址(https://services.gradle.org/distributions/)来查找不同版本的Gradle,以满足特定需求。 在使用这个压缩包...
6. **权限管理**:Android的任务管理器还需要处理权限问题,确保只有拥有相应权限的应用才能访问和操作其他应用的任务。这部分代码涉及到了Android的安全模型。 7. **系统优化**:为了提高系统性能和电池寿命,任务...
这包括监听和处理手机的物理返回键事件,以及优化内置的导航回退功能。本文将详细介绍如何在Ionic 3中实现这些功能,特别是在处理子页面、弹出框和多层回退操作时。 首先,我们需要理解Ionic 3的导航架构。Ionic...
`DialogFragment`是`Fragment`的子类,可以直接托管一个`Dialog`,并且可以更好地处理生命周期和回退栈管理。 8. **资源文件管理** - 项目中的资源文件,如图片、字符串、颜色等,都被放在相应的资源目录下,如`...
在Android系统中,任务管理器(Task Manager)扮演着至关重要的角色,它负责监控和管理运行中的应用程序,以及系统的资源分配。本资料“Android任务管理器源码.zip”提供了Android任务管理器的源代码,这对于深入...
总的来说,理解如何在Android中管理和利用Activity堆栈以及选择合适的方法(如ActivityGroup或Fragment)来实现自定义回退功能,对于开发具有深度导航的应用至关重要。随着Android API的不断更新,开发者应始终关注...
2. **DialogFragment**: Android 推荐使用 DialogFragment 替换直接使用 Dialog,因为它更好地处理了生命周期和回退栈管理。源码中会包含 DialogFragment 的子类,展示了如何扩展它以实现自定义功能。 3. **Builder...