当前位置: 首页 > article >正文

Activity 任务栈 taskAffinity 用法

taskAffinity属性 

taskAffinity 是 Activity 的一个重要属性,主要用于任务栈管理,通常和singleTask和allowTaskReparenting配合使用;

taskAffinity 主要作用:

1. 任务栈分配:
- 默认情况下,同一应用的 Activity 共享同一个任务栈
- 通过 taskAffinity 可以为 Activity 指定不同的任务栈
- 任务栈名称默认为应用的包名

2. 常见使用场景:

<!-- 场景一:为不同功能模块指定不同任务栈 -->
<activity 
    android:name=".PayActivity"
    android:taskAffinity="com.xxx.xx.pay"
    android:launchMode="singleTask">
</activity>

<!-- 场景二:与 FLAG_ACTIVITY_NEW_TASK 配合使用 -->
<activity 
    android:name=".LoginActivity"
    android:taskAffinity="com.xxx.xx.login">
</activity>

3. 使用注意事项:

1. 必须与 launchMode 或 Intent.FLAG_ACTIVITY_NEW_TASK 配合使用
2. 任务栈名称必须包含包名中的点号
3. 不同任务栈的 Activity 数据传递需要特殊处理
4. 会影响返回栈行为
5. 需要考虑内存管理问题
4. 主要应用场景:

1. 多模块应用任务栈隔离
2. 特殊页面独立任务栈
3. 多账户应用场景
4. 应用间跳转管理

allowTaskReparenting 属性 

1. 具体作用:
- 允许 Activity 在运行时从一个 Task 转移到另一个 Task
- 通常发生在原 Activity 所属的应用被启动时 

2. 示例:

// 场景:应用 A 启动了应用 B 的 ActivityB
// ActivityB 配置了 allowTaskReparenting="true"

// 1. 初始状态
Task A (前台):
- ActivityA (应用A)
- ActivityB (应用B) // 此时在应用A的Task中

// 2. 用户按 Home,然后启动应用B
Task A (后台):
- ActivityA (应用A)

Task B (前台):
- ActivityB (应用B) // 自动转移到应用B的Task中

3. 常见应用场景:
- 浏览器打开的网页
- 社交分享功能
- 应用间跳转
- 推送消息打开的页面

4. 注意事项:

// 1. Task 亲和性要匹配
<activity 
    android:taskAffinity="com.example.app"
    android:allowTaskReparenting="true" />

// 2. 生命周期影响
@Override
protected void onTaskReparented(Intent intent) {
    super.onTaskReparented(intent);
    // Activity 迁移到新 Task 时回调
}

5. 使用建议:
- 谨慎使用,可能影响用户体验
- 考虑返回栈的完整性
- 注意数据传递的问题
- 处理好生命周期回调 


http://www.kler.cn/a/553198.html

相关文章:

  • 【机器学习与数据挖掘实战】案例14:基于随机森林分类器的汽车公司客户细分预测
  • CMU 15-445 23Fall Lab 总结
  • ​33页PDF | 基于数字化转型的数据指标与标签体系应用架构设计方案
  • JavaScript 前端面试 4(作用域链、this)
  • 【nodejs+mysql2+docker】node后端开发+docker部署简记
  • 让大模型帮我设计crnn网络及可运行demo,gpt4o豆包qwendeepseek-r1
  • jenkins+docker自动发版java后端完整流程
  • draggable+el-tag 拖动元素有div宽度抖动问题
  • pycharm画图程序如何一步一步的调试
  • 技术分享:MyBatis SQL 日志解析脚本
  • Discuz! X3.5 根目录权限设置
  • 软件开源与AI开源的区别
  • Shapr3D在ipad上无法识别鼠标点击问题
  • 机器翻译中的编码器、自注意和解码器
  • 6.编写正排索引切分字符串|倒排索引原理|引入jieba到项目(C++)
  • 树(数据结构·)
  • 原生稀疏注意力机制(NSA):硬件对齐且可原生训练的稀疏注意力机制-论文阅读
  • 美股分钟级高频数据在量化研究中的时间序列分析
  • deepin 下安装nvm(npm+node)
  • 感想-人工智能:AI 的优缺点 / AI是一把好的锄头,但它永远不能自己去种地